为什么此列表中的文本不正确地浮动?
我有一个列表。列表中的每个项目包含一个图标跨度和文本范围,像这样:为什么此列表中的文本不正确地浮动?
<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.
为什么文本不会浮在图标旁边?
嗯,努力使固定和流体宽度和谐共处......一个老问题。
这里有一个更新的拨弄解决方案: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; }
基本上...
- 浮法您的固定宽度的图标
- 不浮动的可变宽度的元素,但给它填充剩下足够的空间来解释你的图标和一些缓冲空间(这会自动给它100%并减去你指定的任何填充)
- 这两个元素都应该是块级别的。你实际上并不需要指定图标什么,但你的文本范围必须
display: block
(或者你可以切换到DIV的它们已经块级)
此外,因为您指定的右边距在您的父母UL中,添加width: 100%
会使其扩展到浏览器窗口之外并创建一个水平滚动条。只需删除它。
实际上,你在jsfiddle上的解决方案对我来说并不奏效,但你的建议确实如此。你确定小提琴的作品吗? – willdanceforfun 2013-03-11 17:48:34
确实,我不小心使用了jsfiddle的一个旧版本作为调整。更新了链接和代码示例。很高兴它的工作! – Justin 2013-03-11 19:59:11
width: auto
将根据其内容指示文本跨度根据需要承担尽可能多的宽度。这是当该空间不可用时导致整个跨度缠绕的原因。
啊......但我没有宽度更新的jsfiddle(和问题):汽车,我仍然看到图标 – willdanceforfun 2013-03-11 15:44:56
@cosmicbdog下面的div.text: 'width:auto'是默认行为,所以简单地移除'width'将会产生相同的效果。您需要手动指定宽度。 – 2013-03-11 15:46:22
感谢您的解释。也许我是在做梦,但我记得有一个显示器2×跨度:inline-block的应自动调整以适应对方 - 我在这里努力了可扩展的解决方案,而固定宽度。有关于此的任何想法? – willdanceforfun 2013-03-11 15:51:59
您应该在内部元素中使用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。
如果你想使用的字体,而不是图像,你可以使用position:relative
,您LI并添加:
li:before {
content: "\25A0"; <--- this is a UTF-8 square
left: -1em;
position: absolute;
top: 0.1em;
}
(相应地调整你的间距值)
我通常会这样做,但是我在当前场景中使用字体图标,而不是图像:(除非您知道用字体制作背景的方法吗? – willdanceforfun 2013-03-11 15:47:44
是的,您当然可以这样做。我的答案包括这个 – 2013-03-11 15:52:12
这是有创意的,我从来没有想过要做到这一点,这是一个很好的选择,谢谢 – willdanceforfun 2013-03-11 18:02:02
这是你想要的吗? http://jsfiddle.net/dwZaN/6/ – 2013-03-11 16:02:10