css中关于global的理解

5,265 阅读2分钟

css中关于global的理解

开发过程中难免会使用到antdD、elementUI等组件库,当我们要需要修改组件的默认样式时,就需要使用到:global{}将需要修改的class名包裹起来,就可以到到修改的目的。

CSS Module

首先我们要知道:CSS的规则是全局的,任何一个组件的样式规则,都对整个页面有效。这样就会产生样式的冲突,造成污染。简单的来说,我们只要保证类名都不一样就可以了

  • 可以尽量把类名写的复杂点
  • 可以尽量把类名写的长一点
  • 也可以在外层加上父级的选择器 从而达到降低冲突的概率,但是保不齐哪一位同事就正好写的类名跟你一样(心态崩)。而CSS Module会产生一个独一无二的类名,在原来类名基础上拼接一个哈希串,这就是我们想要得到的独一无二的类名。

demo文件的root类名最终结果:

class="root___1GhXv"

局部作用域

CSS Module的做法产生的就是一个独一无二、不重复的类名

全局作用域

开发过程中,一般都会定义全局的共通式样,CSS Module允许使用:global(.className)的语法,声明一个全局规则,则不会被编译成哈希字符串;如引入的组件库组件。

修改全局作用域

:global {
  .class1 {
    需要添加修改的属性1:属性值1;
    需要添加修改的属性2:属性值2;
  }
  .class2 {
    需要添加修改的属性3:属性值4;
  }
}

class1class2需要打开F12调试,到审查元素的界面,找到对应的类名(尽量直接copy),在对应class中直接添加或重写的css属性,即可到达效果。