文章目录
- 1、css
- 1.1 react和vue css的对比
- 1.2 内联样式
- 1.3 普通的css
- 1.4 css modules
- 1.5 在react中使用less
- 1.6 CSS in JS
- 1.6.1 模板字符串的基本使用
- 1.6.2 styled-components的基本使用
- 1.6.3 接受传参
- 1.6.4 使用变量
- 1.6.5 继承样式 避免代码冗余
- 1.6.6 设置主题色
- 1.7 React中添加class
1、css
1.1 react和vue css的对比
1.2 内联样式
1.3 普通的css
缺点:css文件是全局样式 会影响到其他的同名的样式,进行样式的堆叠
1.4 css modules
1.5 在react中使用less
- 1、在根文件中创建
craco.config.js
文件夹 -
- 安装carco
npm i @craco/craco
- 安装carco
-
- 设置内容
const CracoLessPlugin = require("craco-less");module.exports = {plugins: [{plugin: CracoLessPlugin,options: {lessLoaderOptions: {lessOptions: {modifyVars: { "@primary-color": "#1DA57A" },javascriptEnabled: true}}}}],babel: {plugins: [["@babel/plugin-proposal-decorators", { legacy: true }]]}
};
-
- 下载装饰器
npm i @babel/plugin-proposal-decorators -S
- 下载装饰器
- 2、修改package.json文件
"scripts": {"start": "craco start","build": "craco build","test": "craco test","eject": "react-scripts eject"},
报错可能是版本问题更新一下版本 npm update
1.6 CSS in JS
1.6.1 模板字符串的基本使用
// 1.模板字符串的基本使用
const str = `my name is ${name}, age is ${age}`;
console.log(str);// 2.标签模板字符串的使用
function foo(...args) {console.log(args);
}foo(name, age); // (2) ['why', 18]// 这也是一种调用方法
foo``; // [['']]foo`my name is ${name}, age is ${age}`;// 得到的结果变量是默认为空
// [['my name is','','age is',''],'why',18]
1.6.2 styled-components的基本使用
npm install styled-components
下载vscode插件
1.6.3 接受传参
1.6.4 使用变量
import React, { Component } from "react";
import { AppWrapper, SectionWrapper } from "./style";class App extends Component {constructor() {super();this.state = {size: 30,color: "yellow",};}render() {const { size, color } = this.state;return (<AppWrapper><div className="footer">我是footer</div><SectionWrapper fontSize={size} color={color}><div className="title">我是标题</div><p className="content">我是内容, 哈哈哈</p><button onClick={(e) => this.setState({ color: "skyblue" })}>修改颜色</button></SectionWrapper></AppWrapper>);}
}export default App;
import styled from "styled-components";
import * as vars from "./style/variables";// 1、基本使用
// export const AppWrapper = styled.div``export const AppWrapper = styled.div`/* 使用AppWrapper作为标签 就会继承样式 */.footer {background-color: black;}
`;// 2、将子元素单独抽取到一个样式组件
// 3.可以接受外部传入的props作为参数 也可设置默认值attrsexport const SectionWrapper = styled.div.attrs((props) => ({// 默认用传进来的参数 没有的话就使用20textSize: props.fontSize || 20,textColor: props.color || vars.primaryColor,
}))`/* section不需要写类名 */color: ${(props) => props.textColor};border: 1px solid ${vars.primaryColor};.title {/* 上面使用了新的变量来处理fontSize 所以需要使用textSize */font-size: ${(props) => props.textSize}px;color: red;}.content {&:hover {color: yellow;}}
`;
1.6.5 继承样式 避免代码冗余
1.6.6 设置主题色
1.7 React中添加class
cnpm install classnames