我有一份清单。列表中的每个项目都包含图标范围和文本范围,如下所示:
<ul id="features">
<li>
<span class="icon"></span>
<span class="text">blah blah blahlrceoahuoa steohuasnoet huntaoheu saoetnhu saoetuhsaoe tuhsaoetnhu saoehtuasoetnhu saou</span>
</li>
</ul>
使用以下CSS
#features { list-style-type: none; }
#features li { overflow: auto;}
#features li span { float: left; }
#features .icon { background: #000; height: 55px; width: 55px; display: inline-block;}
#features .text { margin-left: 24px; display: inline-block; }
我相信这段代码应该生成浮动在图标旁边的文本,并相应地自动调整其宽度。但情况并非如此see jsfiddle.
为什么文字没有浮动在图标旁边?
答案 0 :(得分:2)
width: auto
将指示文本范围根据其内容假设所需的宽度。这是导致整个跨度在该空间不可用时换行的原因。
答案 1 :(得分:1)
您应该在内部元素中使用CSS背景并浮动LI。图标不需要单独的元素。
#features li { float left }
#features li span {
display:block;
background-image: url(...);
background-repeat:no-repeat;
height:25px;
padding-left:30px;
}
请参阅我的教程:I love lists。
如果您想使用字体而不是图片,可以在LI上使用position:relative
并添加:
li:before {
content: "\25A0"; <--- this is a UTF-8 square
left: -1em;
position: absolute;
top: 0.1em;
}
(相应地调整间距值)
答案 2 :(得分:1)
啊,试图使固定和流畅的宽度和谐相处......一个老问题。
以下是解决方案的更新小提琴:http://jsfiddle.net/dwZaN/11/
#features { list-style-type: none; margin-top: 24px; margin-right: 24px; }
#features li { margin-bottom: 24px; overflow: auto; width: 100%; }
#features li span { }
#features .icon { background: #000; height: 55px; width: 55px; float: left; }
#features .text { padding-left: 75px; display: block; }
基本上...
display: block
(或者您可以切换到已经是块级别的DIV)此外,由于您在父UL中指定了右边距,因此添加width: 100%
会使其扩展到浏览器窗口之外并创建水平滚动条。只需将其删除即可。