我正在创建一个这样的水平菜单:
.leftNav li{
list-style: none;
padding: 1em;
font-size: 1em;
display: inline;
color: #fff;
}
.leftNav li::after{
content: " | ";
}
我得到了:
menu item 1 | menu item 2 | menu item 3 |
我希望每个人之间的间距相等:
menu item 1 | menu item 2 | menu item 3 |
我认为margin
或padding
可以解决这个问题,但事实并非如此。
答案 0 :(得分:4)
由于::after
伪元素位于li
内,padding
将在其后应用,而不是其中任何一方。尝试将padding
添加到.leftNav li::after
而不是li
。
.leftNav li {
list-style: none;
font-size: 1em;
display: inline;
}
.leftNav li::after {
content: " | ";
padding: 1em;
}
.leftNav li:last-child::after {
content: "";
padding: 0;
}

<ul class="leftNav">
<li>menu item 1</li>
<li>menu item 2</li>
<li>menu item 3</li>
</ul>
&#13;
答案 1 :(得分:3)
伪元素被认为是父元素内容的一部分,因此填充在内容和管道之外。尝试将填充添加到::after
伪元素。
.leftNav li{
list-style: none;
font-size: 1em;
display: inline;
color: #fff;
}
.leftNav li::after{
content: " | ";
padding: 1em;
}
答案 2 :(得分:2)
为::after
元素设置填充,而不是列表元素。
.leftNav li {
list-style: none;
font-size: 1em;
display: inline;
color: #000;
}
.leftNav li::after {
content: " | ";
padding: 1em;
}
<ul class="leftNav">
<li>Menu 1</li>
<li>Menu 2</li>
<li>Menu 3</li>
</ul>