当前位置: 首页 > news >正文

React Css 四种引入方式

React CSS

内联样式

优点
  • 样式之间不会有冲突
  • 可以动态获取组件中state的值
缺点
  • 要使用驼峰标识
  • 部分样式没有很友好的提示
  • 如果大量去写内敛样式 容易造成代码混乱
  • 伪类和伪元素无法编写
class HighCom extends PureComponent {constructor(props) {super(props)this.state = {color: 'red',// 改动这里看结果fontSize: '30px'}}render() {const { color, fontSize } = this.statereturn (<div style={{ color, fontSize }}>内联样式</div>)}
}

单独文件css 组件引入

  • 写一个单独的css引入
  • 类似于传统的网页编写
  • 多人合作会造成类名冲突 且相互影响

css模块化

使用
  • .css/.less/.scss 都需要在前面加上module.css/.less/.scss
  • 在组件中引入import myCss from './index.module.css'
  • 在组件中使用 <div className={myCss.className}> css 模块化</div>
优点
  • 解决了React中css局部作用域的问题
缺点
  • 引用的类名不能使用-链接符号 如.box-title 这在js中是不识别的

  • 所有的className 都需要style.className 来写

  • 不方便动态修改样式 还是需要内联去修改

  • import React, { PureComponent } from 'react'
    import myCss from './index.module.css'class HighCom extends PureComponent {constructor(props) {super(props)this.state = {color: 'red',// 改动这里看结果fontSize: '30px'}}render() {// const { color, fontSize } = this.statereturn (<div className={myCss.textStyle}> css 模块化</div>)}
    }export default HighCom
    
  • .textStyle {color: royalblue;
    }
    

React使用less

  • 修改webpack配置

    • npm run eject

    • npm install @craco/craco craco-less less 推荐使用

    • 最外层新建craco.config.js内容如下

      • const CracoLessPlugin = require('craco-less');module.exports = {plugins: [{plugin: CracoLessPlugin,options: {lessLoaderOptions: {lessOptions: {modifyVars: { '@primary-color': '#1DA57A' }, // 可以在此修改默认的主题变量javascriptEnabled: true,},},},},],
        };
        
    • 修改package.json

      •   "scripts": {"start": "craco start","build": "craco build","test": "craco test","eject": "react-scripts eject"},
        

Css in JS styled-components库

介绍
  • CSS-in-JS通过JavaScript来为CSS赋予一些能力,包括类似于CSS预处理器一样的样式嵌套、函数定义、逻辑复用、动态修改状态等等;
  • 虽然CSS预处理器也具备某些能力,但是获取动态状态依然是一个不好处理的点,
安装
  • npm install styled-components
  • 安装vscode插件 vscode-styled-components
基础使用
 import styled from "styled-components";export const Container = styled.div`.title{font-size: 36px;font-weight: 600;color: yellow;}`
 import React, { PureComponent } from 'react'import { Container } from './style.js'class HighCom extends PureComponent {render() {return (<Container><div className='title' > css in js </div></Container>)}}export default HighCom
继承
import styled from "styled-components";
export const Container = styled.div`font-size: 36px;font-weight: 600;color: yellow;`
export const Container2 = styled(Container)`width:100px
`
//Container2 会继承Container里的样式
属性传递
  • 组件中
import React, { PureComponent } from 'react'
import { Container } from './style.js'
class HighCom extends PureComponent {render() {return (<Container fontSize={30}><div className='title' > css in js </div></Container>)}
}
export default HighCom
  • css in js
import styled from "styled-components";export const Container = styled.div`
.title{font-size: ${props=>props.fontSize}px;font-weight: 600;color: yellow;
}
  • 设置默认值
import styled from "styled-components";export const Container = styled.div.attrs(props=>({titleColor:props.color||"red"}))`
.title{font-size: ${props=>props.fontSize}px;font-weight: 600;color: ${titleColor};
}`
http://www.lryc.cn/news/338383.html

相关文章:

  • 题目:输入3个数a,b,c,按大小顺序输出。
  • AI预测体彩排3第3弹【2024年4月14日预测--第1套算法开始计算第3次测试】
  • Android 在xml 布局中如何嵌套 Jetpack Compose
  • Spring Boot统一功能处理(一)
  • 我与C++的爱恋:类与对象(二)
  • BERT入门:理解自然语言处理中的基本概念
  • Discoverydevice.java和activity_discoverydevice.xml
  • 华为OD机试 - 最多颜色的车辆(Java JS Python C C++)
  • 【无人机/平衡车/机器人】详解STM32+MPU6050姿态解算—卡尔曼滤波+四元数法+互补滤波——附3个算法源码
  • NzN的C++之路--构造函数与析构函数
  • 【算法刷题day24】Leetcode:216. 组合总和 III、17. 电话号码的字母组合
  • 一体化泵站的生产制造流程怎样
  • 【1】C++设计模式之【单例模式】
  • 软件设计模式之解释器模式
  • java Web课程管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc
  • Electron 桌面端应用的使用 ---前端开发
  • 【SpringBoot:详解Bean装配】
  • 前端如何将接口返回的码值转成对应的中文展示呢?
  • 智慧公厕中的大数据、云计算和物联网技术引领未来公厕管理革命
  • Excel与项目管理软件比较?哪个是项目组合管理的最佳选择?
  • 过程控制风格的软件架构设计概念及其实际应用
  • WPF 编辑器模式中隐藏/显示该元素
  • 分布式事务 - 个人笔记 @by_TWJ
  • 解决前端笔记本电脑屏幕显示缩放比例125%、150%对页面大小的影响问题--数据可视化大屏
  • 【PG-1】PostgreSQL体系结构概述
  • jq命令简易教程——Linux中处理JSON数据的利器
  • 前端开发攻略---Vue实现防篡改水印的效果。删除元素无效!更改元素属性无效!支持图片、元素、视频等等。
  • 在Go语言中复制sync类型
  • Golang | Leetcode Golang题解之第25题K个一组翻转链表
  • 【初学】前后端flask+vue组合GET案例