我有以下情况:一张图像漂浮在左边。我无法强制一个div(id =“keywords”)(包含一个列表)去上一个div(id =“categories”)(也包含一个列表),但没有打破图像的浮动(这是如果我做了一个明确的事情:在latdiv之前离开会发生什么?如果前一个div中的列表很大,那么应该在图像下滑动。这是我的HTML代码:
<div id="container">
<img src="image-source" alt="Image" id="image-id">
<div id="media_type">
<h2>
Title
</h2>
</div>
<p>
<a href="some-url" target="_blank">Feed</a>
</p>
<div id="categs">
<b>Categories</b>
<ul>
<li>
category1
</li>
<li>
category2
</li>
</ul>
</div>
<!-- should go below image if first list is large enough -->
<div id="keywords">
<b>Keywords</b>
<ul>
<li>
keyword1
</li>
<li>
keyword2
</li>
</ul>
</div>
<div class="clear"></div>
<div id="will-go-bellow-image"></div>
</div>
和css:
#container #image-id {
float: left;
height: 220px;
margin: 0 10px 10px 0;
width: 220px;
}
#categs > ul > li, #keywords > ul > li {
float: left;
margin-top: 10px;
}
#categs > ul, #keywords > ul {
list-style: none outside none;
}
谢谢, 阿德里安
答案 0 :(得分:0)
为了防止内容环绕浮动元素,您可以通过包装器#media_type
包含#categs
,#keywords
和<div>
分区的内容并应用{该元素的{3}}属性如下:
<div class="wrapper">
<div id="media_type"> ... </div>
<p>
<a href="some-url" target="_blank">Feed</a>
</p>
<div id="categs"> ... </div>
<div id="keywords"> ... </div>
</div>
.wrapper {
overflow-x: auto; /* or overflow-x: hidden; */
}
<强> overflow
强>
您还可以使用overflow
属性而不是overflow-x
来获得更好的浏览器支持。
根据你的评论:
如果类别列表足够大,我希望
#keywords
列表滑到图像下方。
我应该注意,由于你是浮动所有列表项,你应该清除<ul>
列表元素末尾的浮点数,以使父项与浮动子项一样高。
这可以通过对父元素使用overflow
属性来实现:
<强> WORKING DEMO 强>
#categs > ul,
#keywords > ul {
list-style: none;
overflow: hidden; /* This will create a new block formatting context */
/* https://developer.mozilla.org/en-US/docs/CSS/block_formatting_context */
}
这会将#keywords
元素推送到新行。
您可能还想从Example Here
中考虑这个好的答案答案 1 :(得分:0)
http://fiddle.jshell.net/5Z8x9/4/show/
#will-go-bellow-image {
clear: left;
}