Create-React-App项目中CSS Modules的使用

目录

1. 功能描述
2. 代码实现
3. 参考文档

一、功能描述

二、代码实现

  • 启用SCSS

    • 安装node-sass
    npm install node-sass --save
    
    • 更改css文件后缀及引入
      .css文件后缀改为.scss,在.js.jsx文件中引入。
    import './App.scss';
    
  • 启用CSS Modules

    项目默认支持CSS Modules,需要将模块化的css文件后缀改为.module.css.module.scss,然后在.js.jsx文件中引入。
    示例代码:

    import React, { Component } from 'react';
    import styles from './Button.module.css'; // 引入模块化后的css文件
    import './another-stylesheet.css'; // 引入普通样式文件
    
    class Button extends Component {
      render() {
        return <button className={styles.error}>Error Button</button>;
      }
    }
    
  • 使用多个类名

    在不使用CSS Modules时,我们给元素设置多个类名时通常使用join()ES6模板字符串,这里给出使用CSS Modules时这两种形式的写法:

        // 数组join()形式
        <div className={[styles.menu_bar, styles.active].join(" ")}>Menu</div>
        
        // ES6模板字符串形式
        <div className={`${styles.menu_bar} ${styles.active}`}>Menu</div>
    
  • 动态使用类名

    有时需要根据某一个变量的值来动态决定类名,这里也同样给出join()ES6模板字符串两种形式的写法:

        // 数组join()形式
        <div className={[styles.menu_bar, show?styles.active:''].join(" ")}>Menu</div>
        
        // ES6模板字符串形式
        <div className={`${styles.menu_bar} ${show?styles.active:''}`}>Menu</div>
    
  • 同时使用公共样式

    有时可能同时需要使用公共样式中的类名,这里也给出join()ES6模板字符串两种形式的写法:

        // 数组join()形式
        <div className={['red_txt', styles.menu_bar, show?styles.active:''].join(" ")}>Menu</div>
        
        // ES6模板字符串形式
        <div className={`red_txt ${styles.menu_bar} ${show?styles.active:''}`}>Menu</div>
    

三、参考文档

原文地址:https://www.cnblogs.com/snaillu/p/14194231.html