react【四】css

文章目录

  • 1、css
    • [1.1 react和vue css的对比](#1.1 react和vue css的对比)
    • [1.2 内联样式](#1.2 内联样式)
    • [1.3 普通的css](#1.3 普通的css)
    • [1.4 css modules](#1.4 css modules)
    • [1.5 在react中使用less](#1.5 在react中使用less)
    • [1.6 CSS in JS](#1.6 CSS in JS)
      • [1.6.1 模板字符串的基本使用](#1.6.1 模板字符串的基本使用)
      • [1.6.2 styled-components的基本使用](#1.6.2 styled-components的基本使用)
      • [1.6.3 接受传参](#1.6.3 接受传参)
      • [1.6.4 使用变量](#1.6.4 使用变量)
      • [1.6.5 继承样式 避免代码冗余](#1.6.5 继承样式 避免代码冗余)
      • [1.6.6 设置主题色](#1.6.6 设置主题色)
    • [1.7 React中添加class](#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
    • 设置内容
js 复制代码
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文件
js 复制代码
"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  },

报错可能是版本问题更新一下版本 npm update


1.6 CSS in JS

1.6.1 模板字符串的基本使用

js 复制代码
// 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 使用变量



js 复制代码
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;
js 复制代码
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作为参数 也可设置默认值attrs

export const SectionWrapper = styled.div.attrs((props) => ({
  // 默认用传进来的参数 没有的话就使用20
  textSize: 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
相关推荐
Dragon Wu3 分钟前
React state在setInterval里未获取最新值的问题
前端·javascript·react.js·前端框架
Jinuss4 分钟前
Vue3源码reactivity响应式篇之watch实现
前端·vue3
YU大宗师7 分钟前
React面试题
前端·javascript·react.js
木兮xg8 分钟前
react基础篇
前端·react.js·前端框架
ssshooter32 分钟前
你知道怎么用 pnpm 临时给某个库打补丁吗?
前端·面试·npm
IT利刃出鞘1 小时前
HTML--最简的二级菜单页面
前端·html
yume_sibai1 小时前
HTML HTML基础(4)
前端·html
给月亮点灯|2 小时前
Vue基础知识-Vue集成 Element UI全量引入与按需引入
前端·javascript·vue.js
三思而后行,慎承诺2 小时前
Reactnative实现远程热更新的原理是什么
javascript·react native·react.js
知识分享小能手2 小时前
React学习教程,从入门到精通,React 组件生命周期详解(适用于 React 16.3+,推荐函数组件 + Hooks)(17)
前端·javascript·vue.js·学习·react.js·前端框架·vue3