tk挠痒痒网址发布页-秘密武器
历史搜索

如何解决Sass和新CSS功能发生冲突的问题

游客2025-05-16 12:53:02
目录文章目录
  1. 错误
  2. 解决方案
  3. 结语

最近,CSS 添加了许多新的很酷的功能,例如自定义属性和新功能。尽管这些新属性可以使我们的生活更加轻松,但它们最终也可能以有趣的方式与 Sass 等预处理器进行交互。因此,这将是关于我遇到的问题,如何解决这些问题?特此整理一篇文章来说说。

错误

如果您在使用新功能min()和新max()功能时,使用不同的单元时可能会遇到如下错误消息:“不兼容的单元:vhem。”

如何解决Sass和新CSS功能发生冲突的问题 1

然后使用 mixins 避免在对诸如 range input 之类的东西进行样式化时一遍又一遍地编写完全相同的声明。不同的浏览器使用不同的伪元素来设置此类控件的组件样式,因此对于每个组件,我们都必须设置用于控制多个伪组件外观的样式。

可悲的是,将其放入我们的 CSS 中可能很诱人:

input::-webkit-slider-runnable-track, 
input::-moz-range-track, 
input::-ms-track { /* common styles */ }

我们不能这样做,因为它不起作用!如果没有选择器之一,整个规则集将被删除。而且,由于没有浏览器能够识别上述所有三种,因此样式不会在任何浏览器中应用。

如果要应用样式,我们需要具有以下内容:

input::-webkit-slider-runnable-track { /* common styles */ }
input::-moz-range-track { /* common styles */ }
input::-ms-track { /* common styles */ }

但这可能意味着许多相同的样式重复了三遍。而且,例如,如果要更改background轨道的,则需要在::-webkit-slider-runnable-track样式,::-moz-range-track样式和样式中进行更改::-ms-track

我们唯一的理智的解决方案是使用 mixin。样式在编译后的代码中会重复,因为它们必须在那儿重复,但是我们不必再写三次相同的东西。

@mixin track() { /* common styles */ }

input {
  &::-webkit-slider-runnable-track { @include track }
  &::-moz-range-track { @include track }
  &::-ms-track { @include track }
}

结语

以上就是今天为大家带来的关于如何解决 Sass 和新 CSS 功能发生冲突的问题,希望对大家有帮助,文章有点长,但是干货满满,建议先马后看。如有更好方法欢迎留言讨论。

标签:blur

本文是由用户"游客"发布,所有内容的版权归原作者所有。没有经过书面许可,任何单位或个人不得以任何形式复制、转载、引用本网站的内容。否则将追究法律责任。

相关专题