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

React学习(三)--- 组件化开发编写css

文章目录

  • 1. 内联样式
  • 2. 引入文件式
  • 3. css modules(受欢迎的一种写法👏)
  • 4. css in js (推荐🤺🌟🌟🌟)
  • 5. 动态添加class的库`classnames` 🌟🌟🌟

1. 内联样式

写法不做赘述。
在这里插入图片描述

2. 引入文件式

在这里插入图片描述

3. css modules(受欢迎的一种写法👏)

在这里插入图片描述

CSSModuleTest.jsx

import { PureComponent } from 'react'
import HomeStyle from '../home.module.css'export class CssModuleTest extends PureComponent {render() {return (<div>CssModuleTest<h1 className={HomeStyle.title}>CSS Module</h1></div>)}
}export default CssModuleTest

home.module.css

.title{font-size: 30px;color: aquamarine;
}

4. css in js (推荐🤺🌟🌟🌟)

在这里插入图片描述

在这里插入图片描述

npm i styled-component

CSSInJs.jsx

import { PureComponent } from 'react'
import { AppWrapper, PropsWrapper, TitleWrapper } from './cssInJs/style'export class CSSInJS extends PureComponent {render() {return (<div>CSSInJS<AppWrapper><TitleWrapper>TitleWrapper</TitleWrapper><div className='title'>title</div><PropsWrapper size={50}>PropsWrapper</PropsWrapper></AppWrapper></div >)}
}export default CSSInJS

style.js
css in js的三种使用:

  1. 基本用法
import styled from 'styled-components'export const AppWrapper = styled.div`.title{font-size: 30px;color: blueviolet;&:hover{color: red;cursor: pointer;}}
`
  1. 子元素单独抽离出来
// 2. 子元素单独抽取出来
export const TitleWrapper = styled.div`font-size: 40px;
`
  1. 传入props
// 3. 传入props
export const PropsWrapper = styled.div`font-size: ${props => props.size}px;
`
  1. attrs
// attrs设置默认值(很少用)
export const PropsWrapperAttrs = styled.div.attrs({ size: 20 })`font-size: ${props => props.size}px;
`// 也可以与props结合使用
export const PropsWrapperAttrs = styled.div.attrs(props=>{return {tColor: props.color || 'blue'}
})`font-size: ${props => props.size}px;
`
  1. 使用变量
import * as vars from './style.js'
// 使用变量
export const ColorWrapper = styled.div`color: ${vars.primaryColor};
`// variables.js
export const primaryColor = '#000'
export const secondColor = '#888'
  1. ThemeProvider
    App.jsx
import { ThemeProvider } from "styled-components"
...
root.render(<React.StrictMode><ThemeProvider theme={{ color: '#eee', fontSize: "20px" }}><App></App></ThemeProvider></React.StrictMode>
)

home/style.js

import styled from 'styled-components'// 使用ThemeProvider传入的主题变量
export const HomeWrapper = styled.div`color: ${props => props.theme.color};font-size: ${props => props.theme.fontSize};
`

5. 动态添加class的库classnames 🌟🌟🌟

npm i classnames

使用classNames()动态添加class

import classNames from 'classnames'
... render() {const { isbbb } = this.statereturn (<div className={classNames("aaa", { "bbb": isbbb })}>classnames</div><div className={classNames(["aaa", { "bbb": isbbb }])}>classnames</div>)}
http://www.dtcms.com/a/427067.html

相关文章:

  • 设计模式(C++)详解——观察者模式(Observer)(1)
  • 网站建设报表明细新手做网站看什么书
  • 微课网站开发如何查看网站域名
  • Spring工程 生成表和mapper文件
  • 服装培训网站建设网站图片切换
  • Python爬虫实战:获取丁香人才网招聘信息与数据分析
  • 光学转镜最小长度计算模型:基于视场角与有效口径的匹配算法
  • 汉子由来 外国人做的网站网页设计的尺寸是指
  • 智能驱动与合规双赢:2025年企业DevOps平台选型深度解析
  • 2025年,如何选择Python Web框架:Django, Flask还是FastAPI?
  • FLASK与JAVA的多文件互传(多文件互传亲测)
  • 蓝牙音箱的技术演进:从便捷到高保真的音频革命
  • 打破信息孤岛,构建统一视界:视频融合平台EasyCVR在智慧校园建设中的核心作用
  • 计算机应用技术网站开发基础知识网店推广平台
  • 快速完美解决在CefSharp.WinForms.ChromiumWebBrowser浏览器中无法播放视频的问题
  • 【高并发服务器:前置知识】一、项目介绍 模块划分
  • 数据结构入门 (五):约束即是力量 —— 深入理解栈
  • 如何搭建网站的结构丰台专业网站建设公司
  • Web渗透之一句话木马
  • 网站建设如何选择服务器百度做公司网站多少钱
  • Vscode+CMake编译时出现中文乱码
  • 38、spark读取hudi报错:java.io.NotSerializableException: org.apache.hadoop.fs.Path
  • 三年级上册语文快乐读书吧读书笔记+知识点(格林童话、安徒生童话、稻草人)+三年级语文快乐读书吧笔记汇总+完整电子版可下载打印
  • 迅为Hi3516CV610开发板强劲内核-海思Hi3516CV610核心板
  • 网站开发可以当程序员wordpress 怎么迁移
  • babelfish for postgresql 分析--babelfishpg_tds--doing
  • 手机网站排行榜焦作专业网站建设费用
  • 小程序开发:开启定制化custom-tab-bar但不生效问题,以及使用NutUI-React Taro的安装和使用
  • 避坑指南:关于文件夹加密软件(以“文件夹加密超级大师”为例)卸载前的正确操作流程
  • 用矩阵实现元素绕不定点旋转