5种使用CSS样式化React的方法 [2023]
你知道吗,超过97%的网站使用CSS来进行样式设计?
CSS(层叠样式表)允许开发人员构建漂亮、易于浏览和呈现的网页。
CSS语言规定了文档如何呈现给用户。在这种情况下,文档是使用XML或HTML等标记语言编写的文件。
React中的样式是什么?
创建、运行和维护React应用的简单性是其受欢迎的主要原因。React是一个JavaScript库,而不是一个框架,它提供了更多预编写的函数和代码片段。
可重用组件的可用性、灵活性、代码稳定性、速度和性能是React在库和框架中排名靠前的原因之一。
在React中,样式是使用CSS使React应用的各个组件在视觉上更具吸引力的过程。然而值得注意的是,React使用JSX(JavaScript和XML)而不是HTML作为其标记语言。其中一个主要区别是,HTML使用.class
来标记类,而JSX使用.ClassName
来表示相同的含义。
为什么应该使用CSS来样式化React?
- 使应用响应式。现代Web应用应该在小屏幕和大屏幕上都可以访问。CSS允许您对React应用应用媒体查询,使其适应不同的屏幕尺寸。
- 加快开发过程。您可以在React应用的多个组件中使用相同的CSS规则。
- 使React应用可维护。使用CSS可以轻松对应用的特定组件/部分进行外观更改。
- 提高用户体验。CSS允许友好的格式化。逻辑位置中带有文本和按钮的React易于导航和使用。
开发人员可以使用多种方法来为其React应用创建样式。以下是一些最常见的方法:
编写内联样式
内联样式是样式化React应用的最简单方法,因为用户不需要创建外部样式表。样式直接应用于React代码。
值得注意的是,内联样式的优先级高于其他样式。因此,如果您有一个带有一些格式的外部样式表,它将被内联样式覆盖。
这是React应用中内联样式的示例。
import React from 'react';
import ReactDOM from 'react-dom/client';
const Header = () => {
return (
Hello World!!!!!
Add a little style!
);
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
显示的元素将显示一个带有浅蓝色背景的h1。
内联样式的优点
- 快速。这是最简单的方法,因为您直接将样式添加到要样式化的标记。
- 优先级高。内联样式会覆盖外部样式表。因此,您可以使用它来专注于特定功能,而不必更改整个应用程序。
- 用于原型设计。您可以使用内联样式在外部样式表上应用格式之前测试功能。
内联样式的缺点
- 可能会繁琐。直接样式化每个标记是耗时的。
- 有限制。您不能在内联样式中使用选择器和动画等CSS功能。
- 大量的内联样式使JSX代码难以阅读。
导入外部样式表
你可以将CSS写在一个外部文件中,然后将其导入到React应用中。这种方法与在HTML文档的标签中导入CSS文件类似。
为了实现这一点,你需要在应用的目录中创建一个CSS文件,将其导入到目标组件中,并为应用编写样式规则。
为了演示外部CSS样式表的工作原理,你可以创建一个CSS file并将其命名为App.css。然后可以按如下方式导出它。
import { React } from "react";
import "./Components/App.css";
function App() {
return (
);
}
export default App;
上面的代码片段将一个外部样式表导入到App.js组件中。App.css文件位于Components文件夹中。
外部CSS样式表的优点
- 可重用。你可以在React应用的不同组件中使用相同的CSS规则。
- 使代码更易读。使用外部样式表时,易于理解代码。
- 能够使用高级CSS功能。在使用外部样式表时,可以使用伪类和高级选择器。
外部CSS样式表的缺点
- 需要可靠的命名约定以确保样式不会被覆盖。
使用CSS模块
React应用可能会变得非常庞大。CSS动画名称和类名默认情况下是全局作用域的。当处理大型样式表时,这可能会导致一个样式覆盖另一个样式的问题。
CSS模块通过在本地范围内定义动画和类名来解决这个问题。这种方法确保类名仅在需要它们的文件/组件中可用。每个类名都有一个唯一的编程名称,避免冲突。
要使用CSS模块,创建一个带有.module.css
的文件。如果你想将样式表命名为style,文件名将为style.module.css。
将创建的文件导入到你的React组件中,然后你就可以开始使用了。
你的CSS文件可能如下所示:
/* styles.module.css */
.font {
color: #f00;
font-size: 30px;
}
你可以按如下方式在App.js中导入CSS模块:
import { React } from "react";
import styles from "./styles.module.css";
function App() {
return (
Hello Geekflare reader
);
}
export default App;
使用CSS模块的优点
- 与SCSS和CSS轻松集成
- 避免类名冲突
使用CSS模块的缺点
- 对于初学者来说,使用CSS模块引用类名可能会令人困惑。
使用Styled-Components
Styled-Components允许开发人员在JavaScript代码中使用CSS创建组件。Styled-Components充当带有样式的React组件。Styled-Components提供了动态样式和唯一的类名。
要开始使用Styled-Components,你可以使用以下命令将该包安装到根文件夹中:
npm install styled-components
下一步是将Styled-Components导入到你的React应用中
以下是一个使用Styled-Components的App.js的代码片段;
import { React } from "react";
import styled from "styled-components";
function App() {
const Wrapper = styled.div`
width: 80%;
height: 120px;
background-color: lightblue;
display: block;
`;
return ;
}
export default App;
渲染的应用程序将具有从Styled Components导入的上述样式。
Styled Components的优点
- 可预测。在这种样式化方法中,样式嵌套到各个组件中。
- 无需关注类命名约定。只需编写样式,软件包会处理其余部分。
- 您可以将Styled Components导出为props。Styled Components将普通CSS转换为React组件。因此,您可以重用此代码,通过props扩展样式并导出。
Styled Components的缺点
- 您必须安装第三方库才能开始使用。
语法上令人敬畏的样式表(SASS/ SCSS)
SASS提供了更强大的工具和功能,这些功能在普通CSS中缺失。您可以通过这些扩展以两种不同的样式编写样式; .scss和.sass。
SASS的语法类似于常规CSS的语法。但是,在SASS中编写样式规则时,您不需要开放和关闭大括号。
SASS的简单代码片段将显示如下;
nav
ul
margin-right: 20px
padding: 0
list-style: list
li
display: block
a
display: block
padding: 6px 12px
text-decoration: underline
nav
要开始在React应用程序中使用SASS,您需要首先将SASS编译为纯CSS。通过使用Create React App命令设置应用程序后,可以安装node-sass来处理编译。
npm install node-sass
然后,您可以创建文件并为其指定.scss或.sass扩展名。然后,您可以以正常方式导入文件。例如;
import "./Components/App.sass";
SASS/SCSS的优点
- 它具有许多动态功能,如混合、嵌套和扩展。
- 使用SASS/SCSS时,不需要编写大量样板代码来编写CSS代码。
SASS/SCSS的缺点
- 样式是全局的,因此可能遇到覆盖问题。
哪种样式化方法最好?
既然我们已经讨论了五种方法,您想知道哪种方法最好。在这个讨论中,很难确定明显的赢家。但是,以下考虑因素将帮助您做出明智的决策:
- 性能指标
- 是否需要design system
- 优化代码的容易程度
内联样式适用于只有几行代码的简单应用程序。但是,其他所有方法;外部样式表、SASS、Styled Components和CSS模块,都适用于大型应用程序。
在大型React应用程序中维护CSS的最佳实践是什么?
- 避免内联样式。在大型React应用程序中为每个标签编写内联CSS样式可能会很繁琐。相反,使用适合您需求的外部样式表。
- Lint your code.诸如Stylelint之类的代码检查工具可以突出显示代码中的样式错误,以便您及早修复它们。
- 定期进行代码审查。编写CSS似乎很有趣,但定期进行代码审查可以轻松地发现并修复错误。
- 对CSS文件进行自动化测试。Enzyme和Jest是您可以用来自动化测试CSS代码的强大工具。
- 保持代码DRY。处理常用样式(如颜色和边距)时,使用实用的变量和类,符合“不要重复自己”(DRY)原则。
- 使用命名约定,例如块元素修饰符。这种方法可以轻松编写易于理解和重用的CSS类。
结论
以上是一些您可以用于为React应用程序添加样式的方法。样式化方法的选择将取决于您的需求、技能和喜好。您甚至可以在React应用程序中结合多种样式化方法,例如内联和外部样式表。
您还可以探索一些前端开发人员的最佳CSS frameworks and libraries。