why my css is overriden by scss which is even not included(为什么我的CSS被SCSS覆盖,而SCSS甚至没有包括在内)
问题描述
我正在处理物化CSS并使用该库https://materializecss.com/
我编译了sass并将该css文件包含在我的html中,但当我尝试做一些自定义的css时,我发现了奇怪的事情。
当我检查元素时,我看到Chrome正在从我的html中仍未使用的.scss文件中获取css。
而我只包括两个css文件。
<link type="text/css" rel="stylesheet" href="css/materialize.css" media="screen,projection" />
<link type="text/css" rel="stylesheet" href="css/style.css"/>
推荐答案
您正在追逐幽灵。问题不是不是SCSS,而是评论中指出的CSS Specificity。忽略该规则来自.scss
文件这一事实,并将重点放在css特性上。
为什么在检查器中看到.scss文件:
要包括的materialize.css
文件包含一个对物化SCSS文件的引用(称为"源映射")(如果您查看Materialize.css文件,您将看到该文件底部列出了源映射引用)。由于该源映射,当您在浏览器的开发人员控制台中检查项时,它实际上会向您显示正在应用样式的SCSS行。这是一件好事,如果你自己在SCSS中开发,你会非常感激的。
真正的问题:
但问题是,materialize.css
样式正在生效,而您的styles.css
样式没有生效,因为CSS Specificity。
注意,物化样式中的选择器为:
.side-nav .collapsible-body li a,
.side-nav .nav.fixed .collapsible-body li a { ...
这些是特定的。它们只寻址li
内的a
元素,.collapsible-body
内的.side-nav
内的a
元素(在第二个选择器中,当然还有额外的.nav.fixed
元素)。
在您的样式中,您的填充被忽略,因为它包含一个更通用的(也称为不太具体的)选择器:
.collapsible-body li a { ...
这不是特定的。它通常寻址.collapsible-body
中的li
中的任何a
元素。这些不会覆盖已更具体设置的样式,如您尝试覆盖的物化填充样式。
如果希望样式覆盖materialize
样式,则需要使用至少与相同的样式。例如:
.side-nav .collapsible-body li a,
.side-nav .nav.fixed .collapsible-body li a {
padding-left: 50px;
font-weight: 400;
}
希望这能有所帮助。如果您打算继续使用MATERIALIZE、Bootstrap或任何其他框架,那么阅读一些关于CSS专用性的文章确实会让您受益良多。
这篇关于为什么我的CSS被SCSS覆盖,而SCSS甚至没有包括在内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么我的CSS被SCSS覆盖,而SCSS甚至没有包括在内
基础教程推荐
- 响应更改 div 大小保持纵横比 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 动态更新多个选择框 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01