【问题标题】:Make elements go to the next column in absolute positioned parent使元素转到绝对定位父级中的下一列
【发布时间】:2016-03-04 10:18:42
【问题描述】:

我的代码中有很多元素。

#relative_float

包含所有内容的蓝色元素必须浮动(出于某种原因)并且它的位置是相对的(只是为了帮助包装绝对定位的元素)。

#absolute
#relative_float 中包含链接的灰色元素。它的 width 属性是 auto 并且它有一个 min-width

这是我的代码的 CSS:

#relative_float {
  width:100px;
  height:100px;
  background: #99C;
  float:right;
  position:relative;
  right: 200px;
}

#relative_float #absolute {
  min-width: 100px;
  height: 150px;
  background-color: #ddd;
  /*position*/
  position: absolute;
  left: 20px;
  top: 20px;
}

#absolute a {
  display: inline-block;
  width: 100px;
  height: 30px;
  line-height: 30px;
  text-align: center;
}
<section id="relative_float">
  <div id="absolute">
    <a>link1</a>
    <a>link2</a>
    <a>link3</a>
    <a>link4</a>
    <a>link5</a>
    <a>link6</a>
    <a>link7</a>
    <a>link8</a>
    <a>link9</a>
    <a>link10</a>
  </div>
</section>

正如您在小提琴中看到的那样,第六个链接和它之后的其他链接脱离了它们的父级。我需要让他们在结束后转到下一列。

我尝试了 CSS 3 列,但没有成功。

【问题讨论】:

    标签: css


    【解决方案1】:

    我认为这可能会对您有所帮助...对于每个链接,请打开一个不同的 URL。只需使用 -moz-column-count: 2; 的除以二列即可。您设置所需的列数。比如:-moz-column-count: 4;

    CSS 代码

    #relative_float {
        width: 100px;
        height: 100px;
        background: #99C;
        float: right;
        position: relative;
        right: 200px;
    }
    
    #relative_float #absolute {
        -moz-column-count: 2;
        min-width: 100px;
        height: 150px;
        background-color: #ddd;
        /*position*/
        position: absolute;
        left: 20px;
        top: 20px;
    }
    
    #absolute a {
        display: inline-block;
        width: 100px;
        height: 30px;
        line-height: 30px;
        text-align: center;
    }
    

    HTML 代码

     <section id="relative_float">
          <div id="absolute">
            <a href="#">link1</a>
            <a href="#">link2</a>
            <a href="#">link3</a>
            <a href="#">link4</a>
            <a href="#">link5</a>
            <a href="#">link6</a>
            <a href="#">link7</a>
            <a href="#">link8</a>
            <a href="#">link9</a>
            <a href="#">link10</a>
          </div>
        </section>
    

    您使用其他元素来明确区分列,例如:

    -moz-column-rule-width: 1px;
    -moz-column-gap: 40px;
    -moz-column-rule-style: solid;
    -moz-column-rule-color: lightblue;
    

    【讨论】:

      【解决方案2】:

      它在这里工作......

      #relative_float {
        width:100px;
        height:100px;
        background: #99C;
        float:right;
        position:relative;
        right: 200px;
      }
      #relative_float #absolute {
        min-width: 100px;
        height: 150px;
        background-color: #ddd;
        /*position*/
        position: absolute;
        left: 20px;
        top: 20px;
      }
      
      #absolute a {
        width: 100px;
        height: 30px;
        line-height: 30px;
        text-align: center;
      }
      <section id="relative_float">
        <div id="absolute">
          <a>link1</a>
          <a>link2</a>
          <a>link3</a>
          <a>link4</a>
          <a>link5</a>
          <a>link6</a>
          <a>link7</a>
          <a>link8</a>
          <a>link9</a>
          <a>link10</a>
        </div>
      </section>

      【讨论】:

      • 链接应该有 width 和 height ,但它不工作,只是不显示,如果你加倍链接会发生什么?
      【解决方案3】:

      你的灰色元素有一个固定的高度:)

      #relative_float #absolute {
        min-width: 100px;
        /* height: 150px; */
        line-height:0;
        background-color: #ddd;
        /*position*/
        position: absolute;
        left: 20px;
        top: 20px;
      }
      

      【讨论】:

      • 对不起,我看错了,你想要你的元素并排吗? :) 还是什么?
      • 我只想要我所说的:) 我确实在我的问题中给出了代码
      • 如果你去掉你的 display:inline-block,你会得到你想要的效果
      • 放松 @john 我想帮忙!
      猜你喜欢
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 2012-08-05
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多