html - 我们如何通过使用伪元素来实现类似列表的行为
问题描述
因为我们在 html 中支持的列表装饰器类型非常少。像圆,十进制圆盘等。如果我们想要自定义列表装饰器,那么我们必须使用伪元素。前任
(a). Hi list item
(b). hi there
伪元素的问题是当你的伪元素的计数器值达到下一位时,内容没有正确对齐。前任。对于数字计数器,最多 9 个内容对齐,但当 10 个出现时,列表项内容向右移动。同样对于 100、1000 ...
为了解决这个问题,我使用了带有文本对齐的显示内联块。
width: 30px;
text-align: right;
margin-right: 10px;
display: inline-block;
另一个问题是,当列表项内容溢出到下一行时,下一行从伪元素计数器开始的相同位置开始。
为了解决这个问题,我必须在 em 中使用 text-indent。但这也不是一个万无一失的解决方案。当计数器值和列表项文本都增加时,会观察到轻微的错位。
我在这里有几个问题。
- 正确对齐伪元素显示内联块是唯一的选择吗?
- 我们如何通过使用伪选择器来实现类似列表的行为。
- 我们可以使用哪些其他可能的 CSS 样式来对齐列表等内容。
如果我需要放置一些代码片段或未对齐的图像快照,请告诉我。
解决方案
好的,我有这个解决方案,使用table
. 所以你不需要使用边距或填充。也用于造型 li( x ) .
使用它li:before content
ul {
counter-reset: list;
width:20%;
display: table;
}
ul > li {
list-style: none;
display: table-row;
}
ul > li:before {
content: "( "counter(list, lower-alpha) " ). ";
counter-increment: list;
display: table-cell;
text-align: right;
width:100%;
}
<ul>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
<li>some text</li>
<li>some more text</li>
<li>some further text</li>
</ul>
推荐阅读
- php - 示例数据和管理员未在 magento 2 中显示
- javascript - RxJS:如何发出 takeWhile 评估为 false 的事件?
- swift - Swift:具有符合相等协议的嵌套枚举案例的更少代码
- android - 如何在材料设计TextInputLayout中实现错误消息的旧外观?
- java - 将 entityGraph 与会话一起使用
- javascript - Laravel Mix 中的 Webpack 别名为 node_modules
- typescript - Firebase 身份验证错误代码:无法导航文件
- javascript - 在打字稿中导入文件的正确方法是什么?
- excel - 如何创建嵌套循环以检查第二个列表中是否存在值
- java - Maven:如何编译?保持文件结构完整