内联显示无序列表,但要保留项目符号
我有一个无序列表的html文件。我想水平显示列表项,但仍保留项目符号。无论我尝试什么,每当我将样式设置为内联以满足水平要求时,我都无法显示项目符号。
解决方案
回答
我们是否在<li />上尝试过" float:left"?像这样的东西:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <style type="text/css"> ul li { float: left; margin-left: 2em; } </style> </head> <body> <ul> <li>test</li> <li>test2</li> </ul> </body> </html>
我只测试了Firefox 3.0.1,可以在其中运行。已设置"保证金",因为否则项目符号会与前一项重叠。
添加:
请注意,当我们漂浮物品时,会将它们从正常流程中移除,这又会导致<ul />没有高度。如果要添加边框或者其他内容,将会得到怪异的结果。
解决该问题的一种方法是在样式中添加以下内容:
ul { overflow: auto; background: #f0f; }
回答
我们还可以在<li>元素上使用背景图像,并带有填充以防止文本重叠。
li { background-image: url(i/bullet.gif) no-repeat center left; padding-left: 20px; display: inline; }
回答
浏览器显示项目符号,因为样式属性" display"最初设置为" list-item"。将显示属性更改为"内联"将取消列表项获得的所有特殊样式。我们应该可以使用:before选择器和content属性对其进行仿真,但是IE(至少通过版本7)不支持它们。用背景图像进行模拟可能是最好的跨浏览器方法。
回答
保持它们的显示不被遮挡,给它们一定的宽度并向左浮动。
这将使它们并排放置,就像内联,并应保持列表样式。
回答
我在其他答案中看到的最佳选择是使用float:left;
。不幸的是,它在IE7中不起作用,这是这里的要求*,我们仍然会失去子弹。我也不是很热衷于使用背景图像。
我要做的是(没有人建议,因此是自回答的)是手动将``添加到我的html中,而不是设置样式。它不理想,但它是我发现的最兼容的选项。
编辑:*目前的读者会注意到原始的发表日期。 IE7不太可能会成为一个问题。
回答
我有同样的问题,但仅在Internet Explorer(我测试了版本7)中,而在Firefox 3或者Safari 3中却没有。使用:before选择器对我有效:
ul.tabs li { list-style: none; float: left; } ul.tabs li:before { content: '\ffed'; margin-right: 0.5em; }
我在这里使用方形的项目符号,但是普通的项目符号\ 2022会起作用。