React融合css

单纯使用tsx文件生成的页面比较单一,可以考虑结合css进行使用,需要说明的是,本人水平有限,仅对接触过的几种方式进行说明

内联样式

内联样式也有多种写法,此处仅列举两种比较简单的写法

写法一

复制代码
import React from "react";
const in_background = {
    backgroundColor: 'green'
}
const Test: React.FC = () => {
    return (
        <div>
            <h4 style={in_background}>H4_HELLO</h4>
        </div>
    );
}
export default Test;

结果

写法二

复制代码
import React from "react";
const Test: React.FC = () => {
    return (
        <div>
            <h1 style={{background: "red"}}>H1_HELLO</h1>
        </div>
    );
}
export default Test;

结果

全局CSS类

内联样式在页面的一侧,可以在全局样式中将其居中

Global.css

复制代码
.cus_background {
    background-color: #646cff;
}
body{
    background-color: sandybrown;
    display: flex;
    justify-content: center;
    align-items: center;
}

Test.tsx

复制代码
import React from "react";
import './Global.css';
const Test: React.FC = () => {
    return (
        <div>
            <h2 className={"cus_background"}>H2_HELLO</h2>
        </div>
    );
}
export default Test;

结果

模块化CSS类

Test.module.css

复制代码
.cus_module_background {
    background-color: aqua;
}
body{
    background-color: #1a1a1a;
    display: flex;
    justify-content: center;
    align-items: center;
}

Test.tsx

复制代码
import React from "react";
import my_styles from './Test.module.css';
const Test: React.FC = () => {
    return (
        <div>
            <h3 className={my_styles.cus_module_background}>H3_HELLO</h3>
        </div>
    );
}
export default Test;

结果

组合测试

这里有一个问题,如果全局CSS类和模块化CSS类同时引入并定义了body,那么哪个生效呢

代码

Test.tsx

复制代码
import React from "react";
import './Global.css';
import my_styles from './Test.module.css';
const in_background = {
    backgroundColor: 'green'
}
const Test: React.FC = () => {
    return (
        <div style={{backgroundColor: "orange"}}>
            <h1 style={{background: "red"}}>H1_HELLO</h1>
            <h2 className={"cus_background"}>H2_HELLO</h2>
            <h3 className={my_styles.cus_module_background}>H3_HELLO</h3>
            <h4 style={in_background}>H4_HELLO</h4>
        </div>
    );
}
export default Test;

查看结果,发现是模块化生效

那么是否说明模块化优先呢,我们不妨再做一个测试,调整全局与模块化的引入顺序,会发现全局生效

相同的属性,后引入的会生效,那么不同的属性呢

当前生效的是全局,改变下模块化的代码

复制代码
.cus_module_background {
    background-color: aqua;
}
body{
    background-color: #1a1a1a;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: background-color 5s;
}

body:hover {
    background-color: red; /* 鼠标悬停时变为橙色 */
}

结果

会发现模块化中差异的属性是生效的

优先级验证

个人理论基础有限,有兴趣的可以自行搜索下CSS的特异性和后来居上原则

参考资料

1.react融合css代码

相关推荐
下家39 分钟前
为了脱离前端鄙视链,于是自己写个框架 - React 党看完沉默了
前端·前端框架
zhiyouTech1 小时前
从“被看见“到“被信任“:关于信源评级机制的一点观察
大数据·前端·人工智能
Hashan1 小时前
Vibe Coding 下前后端怎么对接接口?后端不给力的兜底方案
前端·后端·vibecoding
你挚爱的强哥2 小时前
【sgKeyboard】自定义组件:虚拟键盘
前端·javascript·计算机外设
锅里游的鱼吖2 小时前
echarts自定义折线图
前端·javascript·数据库
hunteritself2 小时前
卷卷卷!GPT-6 Sol、Luna 正式发布,OpenAI 开始卷价格了
大数据·前端·人工智能·深度学习·transformer
何何____2 小时前
Vue 全局事件总线详解
前端·javascript·vue.js
涉密IT资质笔记3 小时前
涉密人员脱密期管理规范:期限分级模型、就业限制边界与违规认定标准
java·服务器·前端·网络·数据库
u0111026753 小时前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画
事圆则缓3 小时前
Flutter 状态管理框架对比(五):GetX 的响应式、依赖注册与生命周期
前端·javascript·flutter