css - 如何丢弃特定标签内的全局选择器规则?
问题描述
我有全局 CSS 规则:
li *:last-child {
margin-bottom: 0;
}
内部<nav>
标签我需要使这个角色不起作用。例如我有代码:
<nav>
<ul>
<li>
<span class='foo'>Foo</span>
</li>
</ul>
</nav>
.foo {
margin: 1rem;
}
我希望班级的角色foo
能够发挥作用。我试过了:
nav li *:last-child {
margin-bottom: unset;
}
这没用。foo
在我的情况下,不可以选择与另一个选择器一起声明类的规则:
.foo, nav li .foo:last-child {
margin: 1rem;
}
这是因为我在js框架情感中定义规则。
我知道我可以添加规则!important
,.foo
但这不是一个好习惯。我可以做些什么来解决我的问题?
UPD。我发现在情感中我可以使用&
占位符作为班级名称。我可以定义的属性margin
:
&, nav li &:last-child {
margin: 1rem;
}
解决方案
您不能让全局选择器不针对单个元素 - 您必须使用辅助规则覆盖全局规则,该辅助规则应用您只想应用于特定元素的行为。请注意,此次要规则应具有更高的特异性。
最简单的方法是使用选择器li .foo
,它比li *:last-child
选择器更具特异性,因此会覆盖它:
这可以在下面看到:
li *:last-child {
margin-bottom: 0;
}
li .foo {
margin: 1rem;
}
<nav>
<ul>
<li>
<span class='foo'>Foo</span>
</li>
</ul>
</nav>
推荐阅读
- docker - Tomcat Web 应用程序未接收通过 AWS ELB 发送的请求
- ios - 如何在没有 NavigationLink 的情况下使用 SwiftUI 推送新的根视图?
- javascript - 如何为我的猜谜游戏实现一个随机数,直到用户猜到它才会不断变化?
- javascript - 为什么这个 PIXI.js 代码会占用大量内存?
- php - PHP中strlen()函数的源代码在哪里?
- javascript - node-gyp 的鸡与蛋问题:指向依赖项中的头文件
- html - 在服务器上部署 create-react-app 时图标 png 文件无法加载
- r - 为什么在 rcpp 中实现的快速排序工作缓慢?
- r - 用于良好数字分割的 R 程序
- prolog - Prolog 谓词,其中两个项目关联但不等价