因此您需要
::marker
伪元素表示列表项的自动生成标记框。(请参见display: list-item
。)
list-item
:
list-item
关键字会导致元素生成一个::marker
伪元素框,其中包含由其list-style属性指定的内容(CSS 2.1§12.5 Lists),以及一个用于自身内容的指定类型的主要框。
CSS Display 3引入了一些list-item
的变体:
list-item block flow
list-item block flow-root
list-item inline flow
list-item inline flow-root
list-item run-in flow
list-item run-in flow-root
但似乎没有浏览器支持,所以最好使用旧的display: list-item
。
因此,如果您使用display: inline-block
或display: table-cell
,标记会消失。
如果您想垂直对齐标记,CSS Lists and Counters drafts提供了解决方案。
li::marker {
display: inline-block;
vertical-align: middle;
}
::before
伪元素代替:ul {
list-style: none;
padding-left: 0;
}
li::before {
content: url('image.ico');
display: inline-block;
vertical-align: middle;
}
list-style-position: inside
,如果列表项有换行符可能看起来不正确。如果您想模拟list-style-position: outside
,可以尝试使用绝对定位。list-style-position: inside
在我的情况下起作用了。 - Matias Haeussler修订答案:
从您提供的图片来看,问题可能出在图标上。如果您重新裁剪图像并减少底部的空白,它可能会正确对齐。
默认情况下,图标将根据行高垂直对齐。如果它比行高大,则会出现不正确的对齐。
尝试调整CSS中li的行高,使其与图标的高度相同。如果图标底部有空白,请将其裁剪掉。
或者重新创建您的图标,使其与行高相同,并尝试删除图像中的所有额外空间。
li
居中?还是li
相对于ul
居中? - Oriol