css modules (index.module.css)

2021-03-18  本文已影响0人  Small_Song

今天在写react项目的时候发现两个组件之间相同类名之间样式会发生覆盖的问题,上网查了一下,大佬们都推荐使用css IN JS

简单介绍一下自己的使用:come on baby

介绍:css in js是使用js编写css统称,用来解决css样式冲突,覆盖等问题

css in js 的具体实现有50多种,其中两种是比较出名的:css modulesstyled-components

在react中推荐使用:css modules,因为react脚手架已经集成进来了,可以直接使用

css modules 通过对css类名的重命名,保证每一个类名的唯一性,从而避免样式冲突问题
实现方式:webpack的css-loader插件
在react脚手架中演化成:文件名类名hash(随机)三部分,只需要指定类名即可。
在index.module,css中我们写一个类名

.red{

}

通过css modules就会给我们转化成类名

.Button_error_axy4s

css modules 在项目中的使用

1.首先创建一个名为index.module.css的样式文件,(这是react中约定的,与普通css区分开)

在要使用的文件中创建样式文件名称

index.module.css

2.在组件中导入样式文件(注意语法)

在要使用的文件在中进行引入

import styles from './index.module.css'

3.通过styles对象访问对象中的样式名来设置样式

<div className={styles.类名}></div>

注:我们在写项目的时候,避免不了使用ui组件,我们要想改变全局样式,需要通过:global()来进行设置
因为我们设置的类名已经发生改变,所以我们在改变组件中的样式时要使用组件中提供的类名

如:

:global(.am-navbar-title){
color:#333;
}
.map{
    padding-top: 45px;
    height: 100%;
}
.container{
    height: 100%;
}

在全局样式前面可以加上属于哪个类名之下,这样可以提高权重,避免覆盖组件类名的样式

.map :global(.am-navbar){
    margin-top: -45px;
}

这里是我写的index.module.css文件
在页面中就变成这样的类名

最后附带上css modules在github上的地址,大佬们请多指教

上一篇 下一篇

猜你喜欢

热点阅读