React-样式使用

​🌈个人主页:前端青山
🔥系列专栏:React篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来React篇专栏内容:React-样式使用

目录

1、行内样式

2、使用className属性

3、css module模块化

4、styled-components

5、scss的使用

6、less的使用

内联样式(Inline Styles)

项目中会经常使用css样式来修饰页面效果

也可以结合css预编译器进行使用

css预编译器(变量、嵌套、混入、函数) 最终要编译为css

常用css预编译器:

sass、scss是一种 scss是sass的第三个版本 编译器发生了改变 node-sass dart-sass

less

stylus

1、行内样式

使用标签的style属性,JSX语法中style属性的值的为对象结构,css属性的名称为大驼峰,如果值为非数字则使用引号包裹

import React, { Component } from 'react'
​
export default class App extends Component {render() {return (// style行内样式<divstyle={{border: '1px solid #ccc',width: '25%',marginTop: 10,marginLeft: 10,display: 'flex',flexDirection:'column',alignItems:'center'}}><div>名称:皮卡丘</div><div>技能:十万伏特</div><div>体态:黄色</div></div>)}
}

2、使用className属性

可以将样式进行抽离出来,并且可以进行复用。但是会存在样式污染的情况,也就是选择器名称不能够重名。

.card {border: 1px solid #ccc;width: 25%;margin-top: 10px;margin-left: 10px;display: flex;flex-direction: column;align-items: center;
}
​
import React, { Component } from 'react'
import './assets/styles/App.module.css'
export default class App extends Component {render() {return (<div><div className="card"><div>名称:皮卡丘</div><div>技能:十万伏特</div><div>体态:黄色</div></div><Child></Child></div>)}
}

3、css module模块化

底层脚手架(webpack)在加载样式文件时,通过module模块化,编译后,把css选择器相同的生成一个唯一的名称,这样就可以避免由于选择名称相同,导致样式的覆盖和污染了。

vue中 <style scoped></style>

src\assets\styles\Child.module.css

.card {border: 1px solid red;width: 25%;margin-top: 10px;margin-left: 10px;display: flex;flex-direction: column;align-items: center;
}
​

src\assets\styles\App.module.css

.card {border: 1px solid red;width: 25%;margin-top: 10px;margin-left: 10px;display: flex;flex-direction: column;align-items: center;
}

src\Child.jsx

import React, { Component } from 'react'
//module模块化css后  实际文件会当做一个对象加载进来
import styles from './assets/styles/Child.module.css'
export default class Child extends Component {render() {return <div className={styles.card}>Child</div>}
}
​

src\App.js

import React, { Component } from 'react'
import styles from './assets/styles/App.module.css'
import Child from './Child'
export default class App extends Component {render() {return (<div>{/* // style行内样式 */}<div className={styles.card}><div>名称:皮卡丘</div><div>技能:十万伏特</div><div>体态:黄色</div></div><Child></Child></div>)}
}

4、styled-components

在react中为了能够使样式进行动态变化,需要在js中完成css的设置。css-in-js技术,在react社区中有多种样式编写的方案。

styled-components是其中优秀方案之一,将样式同时编写在组件的jsx文件中,以达到编写和管理方便的情况。

继承、变量等写法

安装

npm i styled-components

src\App.js

import React, { Component } from 'react'
import Child from './Child'
// 1、引入styled-components 样式库
import styled from 'styled-components'
// 2、创建一个组件容器 并编写样式
const Card = styled.div`border: 1px solid #ccc;width: 25%;margin-top: 10px;margin-left: 10px;display: flex;flex-direction: column;align-items: center;
`
export default class App extends Component {render() {return (<div>{/* 3、将编写好的组件样式 进行套用 和组件标签的使用方式基本一致 */}<Card><div>名称:皮卡丘</div><div>技能:十万伏特</div><div>体态:黄色</div></Card><Child></Child></div>)}
}

样式继承和属性传递

import React, { Component } from 'react'
import styled from 'styled-components'
const Title = styled.div`width: 200px;height: 100px;border: 1px solid black;
`
// 样式继承  将原有的样式进行复用  没有设置的复用  有设置的的以自身为准
const Title1 = styled(Title)`height: 50px;color: red;
`
// 属性传递  变量使用
const Color = styled.div`color: ${(props) => props.color || 'red'};
`
​
export default class App extends Component {render() {return (<div>App<Title>标题内容一</Title><Title1>标题内容二</Title1><Color>红色文字</Color><Color color="green">绿色文字</Color></div>)}
}

5、scss的使用

scss是成熟、稳定的流行的css预编译处理器

在react使用create-react-app脚手架中,内部已经将scss的样式编译配置完成,但是编译器的依赖需要自行安装。

# 安装sass编译器
npm i -D sass

src\assets\styles\App.module.scss

// 变量声明定义
$pramiry-color: red;
.item {display: flex;justify-content: space-between;padding: 5px;// scss嵌套写法> div:first-child {width: 30%;}> div:nth-child(2) {width: 60%;margin-left: 10px;display: flex;flex-direction: column;justify-content: space-between;> div:first-child {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}> div:nth-child(2) {// 变量使用color: $pramiry-color;}}
}

src\App.js

import React, { Component } from 'react'
/***** scss* 选择器嵌套写法  变量的使用***/
import styled from './assets/styles/App.module.scss'
export default class App extends Component {render() {return (<div className={styled.item}><div><imgsrc="http://dingyue.ws.126.net/2021/0201/b63f2e50j00qntwfh0020c000hs00npg.jpg?imageView&thumbnail=140y88&quality=85"alt=""/></div><div><div>被指偷拿半卷卫生纸 63岁女洗碗工服药自杀 酒店回应</div><div>2021-02-02 10:00:51</div></div></div>)}
}

6、less的使用

less支持浏览器和开发者服务器编译两种方式。

默认react脚手架create-react-app默认只支持scss,如果使用less需要解构配置文件,并安装编译器和加载器进行使用

src\assets\styles\App.module.less

// 变量声明定义
@pramiry-color: red;
.item {display: flex;justify-content: space-between;padding: 5px;> div:first-child {width: 30%;}> div:nth-child(2) {width: 60%;margin-left: 10px;display: flex;flex-direction: column;justify-content: space-between;> div:first-child {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}> div:nth-child(2) {// 变量使用color:@pramiry-color;}}
}

①安装less的编译器和加载器

npm i -D less less-loader

②解构配置文件

npm run eject

③配置解析less文件

config\webpack.config.js

配置识别文件后缀、文件扩展名

配置loader加载器调用对应的编译器解析编译文件中的语法

//.............................
/***配置less-loader 开始 */{test: lessRegex,exclude: lessModuleRegex,use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction? shouldUseSourceMap: isEnvDevelopment,modules: {mode: 'icss'}},'less-loader'),// Don't consider CSS imports dead code even if the// containing package claims to have no side effects.// Remove this when webpack adds a warning or an error for this.// See https://github.com/webpack/webpack/issues/6571sideEffects: true},// Adds support for CSS Modules, but using SASS// using the extension .module.scss or .module.sass{test: lessModuleRegex,use: getStyleLoaders({importLoaders: 3,sourceMap: isEnvProduction? shouldUseSourceMap: isEnvDevelopment,modules: {mode: 'local',getLocalIdent: getCSSModuleLocalIdent}},'less-loader')},/***配置less-loader 结束*/
//.............................

内联样式(Inline Styles)

   import React from 'react';function MyComponent() {const customColor = '#ff0066';return (<div style={{color: customColor,fontSize: '18px',backgroundColor: 'lightgray',padding: '10px',borderRadius: '5px',}}>This is a styled component using inline styles.</div>);}export default MyComponent;

在上述代码中,style 属性接收一个对象,其键是 CSS 属性名(驼峰式或全小写),值是相应的 CSS 属性值。这种方法可以利用 JavaScript 的表达式来实现动态样式计算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/611370.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣HOT100 - 48. 旋转图像

解题思路&#xff1a; 要求原地旋转 可以先上下翻转&#xff0c;再沿主对角线反转&#xff08;左上到右下的对角线&#xff09; class Solution {public void rotate(int[][] matrix) {int n matrix.length;// 上下翻转for (int i 0; i < n / 2; i) {for (int j 0; j &…

C语言—每日选择题—Day69

第一题 1、以下程序的输出结果是&#xff08; &#xff09; int main() {char arr[2][4];strcpy (arr[0],"you");strcpy (arr[1],"me");arr[0][3]&;printf("%s \n",arr);return 0; } A: you&me B: you C: me D: err 答案及解析 A 这里重…

python 如何获得重定向输入

通过内置的fileinput模块即可实现&#xff0c;创建文件filein.py&#xff1a; #!/usr/bin/env python import fileinput f_input fileinput.input() for line in f_input:print(line, end)增加可执行权限&#xff1a; chmod ax filein.py 使用&#xff1a; $ ls | ./filein.py…

3-1 AUTOSAR RTE概述

返回总目录->返回总目录<- 一、概念 1.1 虚拟总线VFB 若从整车级别去看待整车上所有的功能模块,即软件组件的架构,它们之间的通信形式主要涉及以下两种: 在单个ECU内部的通信(Intra-ECU Communication);在多个ECU之间的通信(Inter-ECU Communication)。 …

【Leetcode每日一题】 动态规划 - 下降路径最小和(难度⭐⭐)(55)

1. 题目解析 题目链接&#xff1a;931. 下降路径最小和 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了. 2.算法原理 对于这类路径类问题&#xff0c;通常我们首先需要分析状态表示以及状态转移的过程。特别地&#xff0c;本题涉及…

[大模型]Qwen1.5-7B-Chat-GPTQ-Int4 部署环境

Qwen1.5-7B-Chat-GPTQ-Int4 部署环境 说明 Qwen1.5-72b 版本有BF16、INT8、INT4三个版本&#xff0c;三个版本性能接近。由于BF16版本需要144GB的显存&#xff0c;让普通用户忘却止步&#xff0c;而INT4版本只需要48GB即可推理&#xff0c;给普通用户本地化部署创造了机会。&…

Linux进阶篇:linux操作系统一个神奇的分区:swap交换分区

linux操作系统一个神奇的分区&#xff1a;swap交换分区 1 Swap交换分区概念 Linux内核为了提高读写效率与速度&#xff0c;会将文件在内存中进行缓存&#xff0c;这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后&#xff0c;Cache Memory也不会自动释放。这就…

qemu源码解析一

基于qemu9.0.0 简介 QEMU是一个开源的虚拟化软件&#xff0c;它能够模拟各种硬件设备&#xff0c;支持多种虚拟化技术&#xff0c;如TCG、Xen、KVM等 TCG 是 QEMU 中的一个组件&#xff0c;它可以将高级语言编写的代码&#xff08;例如 C 代码&#xff09;转换为可在虚拟机中…

第十二届蓝桥杯真题做题笔记

2、卡片 笔记&#xff1a; 直接巧用排列组合求解即可&#xff1a; 我们通过对样例说明进行分析可知&#xff1a;想要分给n个小孩&#xff0c;那么我们就需要满足C(K, 2) K > n才能满足。 #include<bits/stdc.h> using namespace std;int com(int up, int down){i…

Kafka—ISR机制

ISR机制 Kafka 中的 ISR&#xff08;In-Sync Replicas&#xff09;机制是一种用于确保数据可靠性和一致性的重要机制。ISR 是一组副本&#xff0c;它包括分区的领导者&#xff08;Leader&#xff09;和追随者&#xff08;Follower&#xff09;副本&#xff0c;这些副本与领导者…

element问题总结之el-table使用fixed固定列后滚动条滑动到底部或者最右侧的时候错位问题

el-table使用fixed固定列后滚动条滑动到底部或者最右侧的时候错位 效果图前言解决方案纵向滑动滚动条滑动到底部的错位解决横向滚动条滑动到最右侧的错位解决 效果图 前言 在使用el-table固定行的时候移动滚动条会发现移动到底部或者移动到最右侧的时候会出现表头和内容错位或…

2024-4-11-arm作业

汇编实现三个灯的闪烁 源代码&#xff1a; .text .global _start _start: 时钟使能LDR r0,0x50000A28ldr r1,[r0]orr r1,r1,#(0x3<<4)str r1,[r0]设置PE10输出LDR r0,0x50006000ldr r1,[r0]bic r1,r1,#(0x3<<20)orr r1,r1,#(0x1<<20)str r1,[r0]设置PE1…