内联显示无序列表,但要保留项目符号

时间:2020-03-05 18:44:58  来源:igfitidea点击:

我有一个无序列表的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会起作用。