用CSS划分Child Divs之间的元素宽度

Gar*_*ary 22 css layout semantic-markup

我有不同数量的内联块div,我想集体占用他们父母的100%.可以在没有JavaScript的情况下完成吗?我能想到的唯一方法是使用表格,但使用表格仅用于布局目的当然是不好的做法.

|----------------------|
|{  div 1  }{  div 2  }|
           or
|{div 1}{div  2}{div 3}|
|----------------------|
Run Code Online (Sandbox Code Playgroud)

我也试过,{ display:block; float:left; }但它似乎没有什么区别.

Ben*_*ull 27

您可以display:table-cell在内部div上使用它来执行此操作.对于浏览器来说,内部div的行为类似于表格单元格,它还需要两层包含元素:一个用作表格,另一个用作表格行.

对于这样的结构:

   <div class="outer">
       <div class="middle">
          <div class="inner">Item 1</div> 
          <div class="inner">Item 2</div> 
          <div class="inner">Item 3</div> 
          <div class="inner">Item 4</div> 
       </div>
   </div>
Run Code Online (Sandbox Code Playgroud)

使用这个CSS:

div.inner {display:table-cell;}
div.outer {display:table;}
div.middle {display:table-row;}
Run Code Online (Sandbox Code Playgroud)

一个很好的结构是包含在DIV中的UL:DIV用作表,UL用作行,LI用作表格单元.

旧版浏览器不支持这种技术 - 对于IE8以上的任何东西,你完全没有运气.

如果您需要更多示例代码,请告诉我们!

  • @Fantabulum:不要在`div`s上用`display:table-cell`设置任何`width`,并在`div`上用`display:table`设置`table-layout:fixed`. (6认同)

Ara*_*oft 9

接受的答案错过了一个重要的CSS属性,这是必要的工作:

table-layout:fixed;

这是正确的答案:

HTML:

<div class="outer"><div class="middle">
    <div class="inner">Item 1</div> 
        <div class="inner">Item 2</div> 
        <div class="inner">Item 3</div> 
        <div class="inner">Item 4</div> 
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

div.outer {display:table; table-layout: fixed;}
div.middle {display:table-row;}
div.inner {display:table-cell;}
Run Code Online (Sandbox Code Playgroud)


lin*_*ram 7

您可以在这里使用css3的好处.我现在也面临这个问题我已经使用下面的示例代码修复了这个问题

.parent-container {
  padding: 0;
  margin: 0;
  list-style: none;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: row wrap;
  justify-content: space-around;
  -webkit-justify-content: space-around;
  flex-wrap: nowrap;
  -webkit-flex-wrap: nowrap;
}
.child-item {
  margin: 5px;
  text-align: center;
  padding: 10px;
  background-color: red;
  color: #fff;
}
Run Code Online (Sandbox Code Playgroud)
<ul class="parent-container">
  <li class="child-item">1</li>
  <li class="child-item">2</li>
  <li class="child-item">3</li>
  <li class="child-item">4</li>
  <li class="child-item">5</li>
  <li class="child-item">6</li>
  <li class="child-item">7</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

感谢和问候,Lingeshram