我正在尝试构建一种tag-cloud
。
我有一个div(标记容器),其中我添加了span节点(标记)。
span
个节点是默认的内联元素,因此如果我将display
属性设置为display:block
,则可以防止它们水平溢出div。
我还将float
属性设置为float:left
,因为我希望它们位于同一条线附近,如果线路已满,则会自动转到下一行。
现在的问题是,标签在底部垂直溢出。标记容器不会调整其高度以包含插入的所有标记。我怎么能解决这个问题?
修改 这是小提琴。 http://jsfiddle.net/Vk92s/1/
如您所见,如果注释float: left
,div会自动调整大小,但所有标记都会在新行上处理。
相反,如果我添加float: left
,标签会正确包装,但div不会调整大小。
答案 0 :(得分:4)
这是fiddle。
您可以将overflow
设置为hidden
,如下所示:
<div id="test">
<span>first</span>
<span>second </span>
<span>third </span>
<span>fourth </span>
</div>
#test
{
border: 1px solid black;
width: 100px;
overflow: hidden;
}
span
{
float: left;
}
答案 1 :(得分:3)
尝试添加在所有元素下设置clear: both
的div。
<div id="tag-cloud">
<span class="tag">example</span>
<span class="tag">example</span>
<span class="tag">example</span>
<span class="tag">example</span>
<span class="tag">example</span>
<span class="tag">example</span>
<span class="tag">example</span>
<span class="tag">example</span>
<div class="clear-both"></div>
</div>
.tag{
display: block;
width: 98px;
background-color: red;
margin-right: 2px;
float: left;
}
.clear-both{
clear: both;
}
#tag-cloud{
width: 300px;
background-color: black;
}
答案 2 :(得分:3)
答案 3 :(得分:0)
我不想添加一个清除浮动元素的空元素,而是在父元素上使用以下内容,这样就不会污染你的标记。
.clearfix:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
.clearfix {
display: inline-block;
}
html[xmlns] .clearfix {
display: block;
}
* html .clearfix {
height: 1%;
overflow: visible;
}