我有一些看起来像这样的HTML:
<div class="TheContainer">
<div class="TheData">this is some text inline-block with clear</div>
<div class="TheData">this is some other text inline-block but not clearing</div>
</div>
CSS看起来像这样:
.TheContainer{
margin:20px 20px;
background:red;}
.TheData{
display:inline-block;
clear:both;
background:yellow;
padding:5px 5px;
margin:10px 10px;}
我正在使用inline-block
,以便TheData
div很好地围绕其内容而不是扩展TheContainer
的总宽度。我也使用clear:both
,以便这些TheData div一个堆叠在另一个之上。
但是,当元素设置为clear:both
时,inline-block
似乎不适用。这里的JSFiddle证明了这一点。
如何使用inline-block
并使divs垂直堆叠?
感谢。
答案 0 :(得分:7)
clear
仅用于清算float
要获得所需效果,请将float:left
放在.TheData
上。您很可能还需要div.TheData
以下clear
但float
以下的元素,以确保容器呈现正确的高度。
答案 1 :(得分:1)
我认为你想要的是the one clear-fix to rule them all。
我认为你不想要display: inline-block;
因为它实际上按照它应该的方式工作。在内部元素上使用float: left; clear: both;
并在容器元素上使用clear-fix可能会更好:
CSS:
TheContainer{
margin:20px 20px;
padding:10px 10px;
background:red;
clear:both;
}
.TheData{
float:left;
clear: both;
background:yellow;
padding:5px 5px;
margin:10px;
}
/* For modern browsers */
.cf:before,
.cf:after {
content:"";
display:table;
}
.cf:after {
clear:both;
}
/* For IE 6/7 (trigger hasLayout) */
.cf {
zoom:1;
}.
<div class="TheContainer cf">
<div class="TheData">smaller</div>
<div class="TheData">smaller a</div>
<div class="TheData">smaller a b</div>
<div class="TheData">smaller a b c</div>
<div class="TheData">smaller a b c d</div>
<div class="TheData">this is some other text inline-block but not clearing</div>
</div>