react 6种方式编写样式
在React中,编写样式主要有以下几种方式:
1. 内联样式:
直接在React组件中使用style属性来定义样式。这种方式比较适合定义动态的样式,因为它允许你将JavaScript表达式作为样式的值。
2. 外部样式表
:通过创建外部的CSS文件,并在React组件中引入这些文件来定义样式。这种方式比较适合定义静态的、可复用的样式。
3. CSS Modules:
这是一种将CSS类名局部化的技术,可以有效避免类名冲突的问题。通过创建.module.css文件,并在React组件中引入这个文件,你可以使用模块化的CSS类名来定义样式。
4. Styled Components:
这是一个流行的CSS-in-JS库,允许你以组件化的方式编写CSS。通过创建styled组件,你可以将样式和组件逻辑紧密结合在一起,实现高度可定制化的样式。
5. Emotion:
这是另一个CSS-in-JS库,与Styled Components类似,但提供了更多的灵活性和可扩展性。Emotion支持多种语法,包括对象样式、模板字符串样式和CSS样式表,可以满足不同的编写需求。
6. Radium:
这是一个用于React的内联样式库,提供了更多的功能和便利性。除了支持基本的内联样式外,Radium还支持伪类和媒体查询等高级特性,可以让你更方便地管理样式。
需要注意的是,以上方式并不是互斥的,你可以根据项目的需求和个人的偏好选择适合的方式来编写样式。同时,React社区还在不断发展,可能会有新的样式编写方式出现。
另外,对于大型项目和团队,可能会采用多种样式编写方式相结合的策略,以实现更好的可维护性和可扩展性。例如,可以使用外部样式表来定义全局的、共享的样式,而使用CSS-in-JS库来定义组件级别的、高度定制的样式。
下面详细代码示例
下面我将针对上面提到的6种方式给出详细的代码示例:
1. 内联样式
function MyComponent() {const myStyle = {color: 'blue',backgroundColor: 'lightgrey',padding: '10px',borderRadius: '5px'};return <div style={myStyle}>This is an inline styled div.</div>;
}
2. 外部样式表
假设你有一个App.css文件:
/* App.css */
.my-class {color: green;background-color: lightblue;padding: 20px;text-align: center;
}
然后在React组件中引入并使用:
import React from 'react';
import './App.css'; // 引入外部样式表function App() {return <div className="my-class">This div uses external CSS.</div>;
}export default App;
3. CSS Modules
假设你有一个MyComponent.module.css文件:
/* MyComponent.module.css */
.myStyledDiv {color: purple;background-color: pink;padding: 15px;border: 1px solid black;
}
然后在React组件中引入并使用:
import React from 'react';
import styles from './MyComponent.module.css'; // 引入CSS Modulefunction MyComponent() {return <div className={styles.myStyledDiv}>This div uses CSS Modules.</div>;
}export default MyComponent;
4. Styled Components
首先,你需要安装styled-components库:
npm install styled-components
然后编写组件:
import React from 'react';
import styled from 'styled-components';const StyledDiv = styled.div`color: orange;background-color: white;padding: 25px;border: 2px dashed black;
`;function MyStyledComponent() {return <StyledDiv>This div uses Styled Components.</StyledDiv>;
}export default MyStyledComponent;
5. Emotion
首先,你需要安装@emotion/react和@emotion/styled库:
npm install @emotion/react @emotion/styled
然后编写组件:
import React from 'react';
import styled from '@emotion/styled';const StyledDiv = styled.div`color: brown;background-color: lightgreen;padding: 10px 20px;border: 1px solid darkgrey;
`;function MyEmotionComponent() {return <StyledDiv>This div uses Emotion.</StyledDiv>;
}export default MyEmotionComponent;
6. Radium
首先,你需要安装radium库:
npm install radium
然后编写组件:
import React from 'react';
import Radium from 'radium';const MyStyledDiv = Radium(React.createClass({render() {return (<div style={[styles.base,styles.primary]}>This div uses Radium.</div>);}
}));const styles = {base: {color: '#fff',padding: '20px',borderRadius: '4px'},primary: {backgroundColor: '#0074d9'}
};function MyRadiumComponent() {return <MyStyledDiv />;
}export default MyRadiumComponent;
请注意,上面的Radium示例使用了React.createClass,这是React早期的类组件创建方式,现在更推荐使用ES6的类语法或者函数组件与Hooks。不过,为了演示Radium的用法,这里仍然使用了React.createClass。在实际项目中,你应该会使用函数组件或者类组件与Radium结合。
Radium现在可能不是最流行的选择,因为React的生态系统已经发展了很多其他的CSS-in-JS库,并且React自身也在样式方面有所改进。不过,了解Radium仍然有助于理解CSS-in-JS的概念和用法。
相关文章:
react 6种方式编写样式
在React中,编写样式主要有以下几种方式: 1. 内联样式: 直接在React组件中使用style属性来定义样式。这种方式比较适合定义动态的样式,因为它允许你将JavaScript表达式作为样式的值。 2. 外部样式表 :通过创建外部的…...
计算机找不到msvcr100.dll的多种解决方法分享,轻松解决dll问题
msvcr100.dll作为系统运行过程中不可或缺的一部分,它的主要功能在于提供必要的运行时支持,确保相关应用程序能够顺利完成编译和执行。因此,当操作系统或应用程序在运行阶段搜索不到该文件时,自然会导致各类依赖于它的代码无法正常…...
系分笔记数据库反规范化、SQL语句和大数据
文章目录 1、概要2、反规范化3、大数据4、SQL语句5、总结 1、概要 数据库设计是考试重点,常考和必考内容,本篇主要记录了知识点:反规范化、SQL语句及大数据。 2、反规范化 数据库遵循范式的设计,使得多表查询和连接表查询较多的时…...
php实现支付宝商户转账
目录 一:背景介绍 一:准备工作 三:代码实现 一:背景介绍 最近工作中,要用到支付宝的商家转账功能,用php代码实现,网上找的内容,有些是老版本的实现,有些是调用sdk&am…...
并发编程(十一)
性能测试的常用命令 1、Netstat是在内核中访问网络连接状态及其相关信息的程序,它能够显示协议统计和当前TCP/IP的网络连接。 Netstat命令的常用格式如下: netstat -a:显示所有网络连接和侦听端口。 netstat -b:显示在创建网络…...
vue3 指令详解
系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、v-model (双向绑定功能)二、v-bind(用于将一个或多个属性绑定到元素的属性或组件的 prop)三、v-if、v-else、v-else-if(用于根据条件选择性地渲染元素)四、v-show(根…...
数据科学竞赛平台推荐
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…...
安全防御之安全审计技术
安全防御中的安全审计技术是保障信息系统安全的重要手段之一。其主要目标是对信息系统及其活动进行记录、审查和评估,以确保系统符合安全策略、法规要求,并能够及时发现潜在的安全风险和异常行为。通过安全审计,可以对系统中的各种活动进行记…...
C#多窗口那些事儿
目录 1、调用窗体与被调用窗体 2、窗体的本质 3、调用窗体访问被调用窗体内部对象 4、被调用窗体访问调用窗体 (1)被动方式,也就是调用窗体主动给被调用窗体一个“接口” i.调用窗体定义“静态”变量,并将开放的变量复制 ii.在被调用窗体中,使用:调用窗体名.静态变…...
记一次 Redis 数据库迁移
笔者通过一个 Redis 数据库迁移的例子,介绍了迁移脚本的执行思路。 作者:马文斌,MySQL/Redis 爱好者~ 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文约 500 字,预计阅…...
小学信息科技Python课程第2课:坐标与画笔
一、turtle画布与坐标系 在同一平面互相垂直且有公共原点的两条数轴构成平面直角坐标系。在坐标系中,水平方向的轴都称为x轴,垂直方向的轴都称为y轴 它们相交于O点,在这一个点里,x轴的值为0,y轴的值也为0,所…...
BP神经网络(公式推导+举例应用)
文章目录 引言M-P神经元模型激活函数多层前馈神经网络误差逆传播算法缓解过拟合化结论实验分析 引言 人工神经网络(Artificial Neural Networks,ANNs)作为一种模拟生物神经系统的计算模型,在模式识别、数据挖掘、图像处理等领域取…...
Word不同部分(分节)设置页眉和页码的使用指南——附案例操作
Word页眉和页码分节设置的使用指南 目录 Word页眉和页码分节设置的使用指南摘要1. 插入分节符2. 设置不同的页眉3. 设置不同的页码4. 调整页码的起始值5. 删除或更改分节6. 预览和调整 摘要 在撰写word文档时,我们经常需要在不同的部分应用不同的页眉和页码格式。在…...
Ubuntu按转发HDF5
源码编译流程 下载源代码 wget https://hdf-wordpress-1.s3.amazonaws.com/wp-content/uploads/manual/HDF5/HDF5_1_14_3/src/hdf5-1.14.3.zip 解压 unzip hdf5-1.14.3.zip 进入解压后的目录 cd hdf5-1.14.3 编译 依次执行下面的命令 ./configure --prefix/usr/local/hdf5…...
HCIP OSPF实验
任务: 1.使用三种解决ospf不规则区域的方法 2.路由器5、6、7、8、15使用mgre 3.使用各种优化 4.全网可达 5.保证更新安全 6.使用地址为172.16.0.0/16合理划分 7.每个路由器都有环回 拓扑图&IP划分如下: 第一步,配置IP&环回地址…...
Linux上如何一键安装软件?yum源是什么?Linux如何配置yum源?
这几个问题是Linux操作的入门问题,但是确实也会让刚上手Linux小伙伴头疼一阵,故特有此文,希望能对刚入门的小伙伴有一些帮助~ 众所周知 在linux上在线安装软件需要用到yum命令,经常下述命令来安装 yum install [-y] 包名 #-y的…...
Egg框架搭建后台服务【1】
需求 博客系统升级,本来是用 express 写的,最近发现 Egg 不错,正好学习升级一下。边学边写。 Ps:相同的功能,迭代的写法,由浅入深,做个记录。 开发 初始化 安装 node版本需要 >14.20.0…...
Unity的Camera类——视觉掌控与深度解析(下)
前言 欢迎阅读本篇博客,这章我们将深入探讨 Unity 游戏引擎中 Camera 类的委托和枚举。摄像机在游戏开发中扮演着关键角色,它不仅定义了玩家视角的窗口,还影响着游戏的视觉表达和整体体验。理解和正确使用 Camera 类的枚举和委托,…...
【模型评估 06】超参数调优
对于很多算法工程师来说,超参数调优是一件非常头疼的事情。除了根据经验设定所谓的“合理值”之外,一般很难找到合理的方法去寻找超参数的最优取值。而与此同时,超参数对于模型效果的影响又至关重要。有没有一些可行的办法去进行超参数的调优…...
Matlab 字符识别OCR实验
Matlab 字符识别实验 图像来源于屏幕截图,要求黑底白字。数据来源是任意二进制文件,内容以16进制打印输出,0-9a-f’字符被16个可打印字符替代,这些替代字符经过挑选,使其相对容易被识别。 第一步进行线分割和字符分割…...
VINS-Mono跑EUROC数据集后,如何用evo工具包进行轨迹精度评估与可视化(附完整命令)
VINS-Mono轨迹精度评估实战:从EUROC数据集到evo工具包全流程解析 在完成VINS-Mono算法在EUROC数据集上的运行后,如何科学评估其轨迹精度成为算法优化和论文撰写的关键环节。本文将深入讲解使用evo工具包进行定量分析的完整流程,涵盖指标计算、…...
从零开始:Linux系统部署AI视频生成工具Sora.FM的实战指南
从零开始:Linux系统部署AI视频生成工具Sora.FM的实战指南 【免费下载链接】sorafm 项目地址: https://gitcode.com/GitHub_Trending/so/sorafm 在数字化内容创作领域,AI视频生成技术正在引领一场新的革命。Sora.FM作为基于Sora AI技术的创新平台…...
利用Cosmos-Reason1-7B进行技术文档(LaTeX/Markdown)自动摘要与校对
利用Cosmos-Reason1-7B进行技术文档(LaTeX/Markdown)自动摘要与校对 你有没有过这样的经历?面对一份几十页的技术论文或者一份复杂的实验报告,光是通读一遍就要花掉大半天时间。更别提还要从中提炼核心观点,或者逐字逐…...
ANIMATEDIFF PRO效果展示:森林晨雾中飘落树叶+光线穿透动态GIF集
ANIMATEDIFF PRO效果展示:森林晨雾中飘落树叶光线穿透动态GIF集 1. 引言:当AI遇见电影级动态美学 想象一下,你脑海中有一个绝美的画面:清晨的森林,薄雾缭绕,阳光透过层层叠叠的树叶,形成一道道…...
ENSP实战:从零构建企业级WLAN网络
1. 企业级WLAN网络规划与ENSP环境搭建 第一次接触企业级WLAN部署时,我被各种专业术语搞得晕头转向。直到用华为ENSP模拟器实操了几次,才发现原来搭建无线网络就像搭积木一样有趣。ENSP作为华为官方推出的网络仿真平台,完美复现了真实设备的操…...
每日算法练习:LeetCode 151. 反转字符串中的单词 ✅
大家好,我是你们的算法小伙伴。今天我们来练习一道字符串处理的经典中等题 ——LeetCode 151. 反转字符串中的单词。这道题考察对空格和单词边界的处理,是面试中高频的字符串操作题。题目描述给你一个字符串 s,请你反转字符串中单词的顺序。单…...
OpenClaw技能开发入门:基于nanobot定制个人自动化模块
OpenClaw技能开发入门:基于nanobot定制个人自动化模块 1. 为什么需要自定义OpenClaw技能? 去年夏天,当我第一次接触OpenClaw时,最让我惊喜的不是它预置的几十种技能,而是它允许开发者像搭积木一样自由扩展功能。作为…...
智能号码定位引擎:企业级地理信息快速响应解决方案
智能号码定位引擎:企业级地理信息快速响应解决方案 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors…...
TranslateGemma高可用部署:健康检查、监控与自动恢复策略
TranslateGemma高可用部署:健康检查、监控与自动恢复策略 1. 为什么高可用部署对TranslateGemma至关重要 TranslateGemma作为企业级神经机器翻译系统,在生产环境中面临着724小时不间断服务的严苛要求。不同于开发测试环境,生产部署必须考虑…...
ReactPy服务端渲染终极指南:如何在Python中构建现代Web应用
ReactPy服务端渲染终极指南:如何在Python中构建现代Web应用 【免费下载链接】reactpy Its React, but in Python 项目地址: https://gitcode.com/gh_mirrors/re/reactpy ReactPy是Python中构建用户界面的革命性库,让你无需JavaScript就能创建现代…...
