如果我只想在链接后插入一个伪元素,只有在链接后面跟着另一个元素说ul。我怎么能这样做?
示例:
<ul>
<li>
<a href="#">blah<!-- insert -> here with CSS --></a>
<ul>
<li>More stuff</li>
</ul>
</li>
<li>
<a href="#">blah 2<!--Do nothing here--></a>
</li>
</ul>
CSS我希望可能发生:
ul li a:after if(next:ul) {
content:"->";
}
我不是想尝试使用JavaScript / jQuery。我意识到如果条件不是css的区别。 有没有办法做到这一点?
答案 0 :(得分:5)
一般情况下,无法根据下一个兄弟选择元素。
在您的特定情况下,您可以使用ul li a:not(:last-child)::after
,因为您的锚点未被<ul>
元素跟随也是最后一个子元素。
答案 1 :(得分:1)
您可以简单地使用:
ul + li a:after { /* ...css code... */ }
基本上这意味着:
匹配a
元素中包含的li
元素,该元素后面紧跟ul
元素。
CSS中的+
运算符称为adjacent sibling combinator。
答案 2 :(得分:0)
如果要过滤元素hierarchy/list
中的任何元素,可以使用以下方法。
ul li a:not(:nth-last-child(N))::after
此处N
是从结尾开始遍历的任何正整数; 1
表示最后一个元素2
表示倒数第二,依此类推。代替ul li
在这里使用任何选择器
有关更多信息,请访问nth-last-child()。