我正在尝试在 CSS + HTML 中创建一个有序列表,如下所示:
我一辈子都想不出怎么做。我试过使用 list-image
但数字没有出现。我尝试设置背景,但如果 list-style-position
设置为 outside
,它不会出现在数字后面。我尝试将其设置为背景和 list-style-position: inside
,然后将文本放入 li
中 div
,但没有浮动组合对齐它,浮动等工作时没有环绕数字。
这似乎是我在很多网站上看到的东西,但目前我似乎找不到一个有效的例子,谷歌搜索也没有给我任何结果。
那么,有人可以帮我吗?您将如何使用 HTML+CSS 创建上述内容,最好不使用 JS,绝对不使用图像。此文本需要可选择和复制/粘贴。
因为评论者问,这是我现在的标记:
<ol>
<li><span>List item one.</span></li>
<li><span>List item two.</span></li>
<li><span>List item three.</span></li>
</ol>
我尝试过的 CSS 都没有接近工作,所以我不确定分享我目前拥有的东西的价值。这是一个失败的版本……
ol { display: block; list-style: decimal outside url('/images/lists/yellow-circle-18px.png'); }
ol li { width: 176px; margin-right: 20px; float: left; }
ol li span { display: block; }
原文由 Andrew 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题的水平布局方面可以使用 CSS
float
和/或display:inline-block;
来实现。这些都有很好的记录,因为列表元素通常用于使用这种技术创建下拉菜单,所以我不会在这里进一步讨论。带圆圈的数字方面有点棘手。
它不能使用标准列表样式来实现,除非您准备使用图形,并对每个图像名称进行硬编码。这是一种非常老派的方法,我怀疑这不是您想要的。
我突然想到的一个想法是使用一种字体,其数字在圆圈中,例如 这个,然后简单地设置
<ol>
元素的样式以使用该字体,以及<li>
使用常规字体的元素。这样做的缺点是您必须将列表保持在 10 个以下,并且用户的浏览器需要为此下载整个字体。此外,您需要选择一种与您网站上的其他字体相匹配的字体。可能不是一个理想的解决方案,但它会起作用。一个更实用的解决方案是完全放弃列表样式(仍然使用相同的 HTML 标记,但设置
list-style:none;
)。然后将使用 CSS 很少使用的:before
和count()
功能插入数字。在您的情况下,它将遵循以下几行:
这将为您提供相同的编号序列。然后,您需要向上面的选择器添加更多样式,为其提供圆形背景、一些颜色和一点边距。您还需要以某种方式设置
<li>
元素的样式,以便其整个文本从数字开始缩进,而不是在数字下方换行。我希望这可以通过display:inline-block;
或类似的方式来完成。它可能需要一些实验,我还没有给出完整的答案,但这项技术肯定会奏效。
有关文章和示例以及浏览器兼容性图表,请参阅 quirksmode.org 。
浏览器兼容性图表提供了有关此技术的一个主要缺点的线索:它不适用于 IE7 或更早版本。不过它在 IE8 和所有其他浏览器中确实有效,所以如果你能忍受 IE7 用户看不到它(现在没有那么多),那么它应该没问题。