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.mzph.cn/news/809664.shtml

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

相关文章

sidusv指标,fpmarkets澳福愿称之为最强辅助指标

做投资的最怕的就是犹豫不定&#xff0c;抓不住交易的机会&#xff0c;最后又后悔不及。现在不用怕了&#xff0c;fpmarkets澳福今天分享愿称之为最强辅助指标——sidusv指标。可以帮助投资者轻松把握交易时机。 sidusv指标通过箭头指示进入点;红色的是卖出位置&#xff0c;绿色…

linux学习:结构体、联合体、枚举

目录 结构体 例子 大小 联合体 例子 大小 枚举 例子 大小 结构体 结构体就是我们自己发明的数据类型&#xff0c;因此使用结构体至少包含两个步骤&#xff1a; 第一&#xff0c;创建一个自定义的结构体类型。 第二&#xff0c;用这个自己搞出来的类型定义结构体变量 …

如何激怒一位Python爱好者?

写代码不那么pythonic风格的&#xff0c;多多少少都会让人有点难受。 什么是pythonic呢&#xff1f;简而言之&#xff0c;这是一种写代码时遵守的规范&#xff0c;主打简洁、清晰、可读性高&#xff0c;符合PEP 8&#xff08;Python代码样式指南&#xff09;约定的模式。 Pyt…

基于SSM+Jsp+Mysql的宜佰丰超市进销存管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

Python实现对一个IP地址和端口号列表进行nmap扫描

一.功能目的 使用python实现对一个IP地址和端口号列表进行nmap扫描 二.功能调研 根据查找得知我们需要用到python的subprocess库 1.代码示例 以下是搜到的简单的subprocess库代码 import subprocess result subprocess.run([ls, -l], capture_outputTrue, textTrue) …

Web程序设计-实验01 HTML与CSS基础

【实验主题】 影视详情页设计 【实验任务】 1、浏览并分析多个影视详情页面&#xff08;详见参考资源&#xff0c;建议自行搜索更多影视网站&#xff09;的主要元素构成和版面设计&#xff0c;借鉴并构思预期效果。 2、新建 index.html文件&#xff0c;合理运用HTML标记编写…

【回溯】Leetcode 17. 电话号码的字母组合【中等】

电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 **输入&#xff1a;**digits “23” 输出&am…

LLM大语言模型助力DataEase小助手,新增气泡地图,DataEase开源数据可视化分析平台v2.5.0发布

2024年4月8日&#xff0c;DataEase开源数据可视化分析平台正式发布v2.5.0版本。 这一版本的功能升级包括&#xff1a;新增DataEase小助手支持&#xff0c;通过结合智能算法和LLM&#xff08;即Large Language Model&#xff0c;大语言模型&#xff09;能力&#xff0c;DataEas…

智能加湿器中应用的数字温度传感芯片

随着经济的发展和人民生活水平的提高&#xff0c;人们对生活质量和健康的要求愈来愈高。空气加湿器就是这样慢慢的走进全球的很多家庭当中&#xff0c;成为干燥地区家庭不可缺少的一种小型家电产品。空气加湿器在我国仍属于新兴产物&#xff0c;加大对空气加湿器的研究与开发的…

【how2j练习题】HTML DOM部分阶段练习

练习1 <!-- 验证账号是否已经存在 那么就在js使用简单的验证规则&#xff1a; 如果账号是以a或者A开头的&#xff0c;那么就提示已经存在了。 --> <!-- 1.需要一个输入框和一个按钮 2.按钮上绑上一个事件。 3.编写事件&#xff0c;并输出答案 --><html><…

服务器感染了.rmallox勒索病毒,如何确保数据文件完整恢复?

引言&#xff1a; 随着网络技术的发展&#xff0c;勒索病毒已经成为当今数字时代的一大威胁。近期出现的.rmallox勒索病毒更是引发了广泛关注。本文将深入探讨.rmallox勒索病毒的特点&#xff0c;并提供一系列应对这一威胁的高效策略。如果受感染的数据确实有恢复的价值与必要…

如何打造高度柔性动态的智能仓储物流解决方案?

近年来&#xff0c;仓储物流行业步入自动化系统集成时代&#xff0c;以货架为存储主体的方式逐步发展成为了自动化储方式&#xff0c;核心设备也由货架转变为机器人货架&#xff0c;形成系统集成物流存储体系。河北沃克根据客户需求精准发力&#xff0c;推出了新一代海格里斯智…

TSINGSEE青犀边缘计算AI智能分析网关V4客流统计算法的配置步骤及使用

TSINGSEE青犀AI智能分析网关V4内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为、烟火等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。硬件支持RTSP、GB28181协议、以及厂家私有协议接入&#xff0c;可兼容市面上常见的…

十六、计算机视觉-Scharr算子 和 Laplacian算子

文章目录 一、Scharr算子二、Laplacian算子 一、Scharr算子 Scharr算子和Sobel算子原理都一样&#xff0c;它是由Scharr在2002年提出的一种改进的Sobel算子。Scharr算子的优点在于它相对于Sobel算子有更好的旋转不变性和更小的边缘响应误差。 我们看下Scharr算子的水平卷积核&…

MySQL:主键,事件,索引的基础用法(10)

主键 指定某个字段作为主键&#xff0c;这个字段内容无法为空&#xff0c;而且他的内容不能重复作为唯一的标识 主键还有自增和非自增&#xff0c;比如你创建了一个表&#xff0c;你设置了自增&#xff0c;他就会按编号依次自动加一 我创建了一个名为tarro的数据库&#xff…

element-ui使用记录

element-ui的组件名就是类名 样式穿透&#xff08;用来修改没有类名的子组件样式&#xff09; 例如修改头部具名插槽的样式&#xff08;但是无法定位该元素&#xff09; 查看最后生成的html结构中对应的结构&#xff08;这里的头部有类名&#xff0c;可以直接对该类名进行样…

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 这里重…

FFmpeg: 简易ijkplayer播放器实现--03UI界面设计

文章目录 UI设计流程图UI设计界面点击播放功能实现 UI设计流程图 UI设计界面 主界面 控制条 播放列表 画面显示 标题栏 设置界面 提示框 点击播放功能实现 槽函数实现&#xff1a; connect(ui->ctrlBarWind, &CtrlBar::SigPlayOrPause, this, &Main…

zookeeper解析

目录 zookeeper定义 zookeeper定义 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目 Zookeeper工作机制 zookeeper从设计模式角度来理解&#xff1a; 是一个基于观察者模式设计的分布式服务管理框架&#xff0c;它负责存储和管理大家都关心…

DS18B20与单片机的通信、DS18B20采集温度、MODBUS协议、练习框架

我要成为嵌入式高手之4月9日51单片机第四天&#xff01;&#xff01; ———————————————————————————— DS18B20温度传感器 单总线数字温度计 异步的半双工的串行通信 测量范围从-55℃ ~ 125℃&#xff0c;增量值为0.5℃ 要用DS18B20采集温度&am…