css的思考

news2024/10/21 15:48:09

CSS思考[vue react tailwindcss]

传统css

  • 全局作用域: 一旦生效,应用于全局,造成各种各样的冲突,为了避免冲突,会写复杂的id选择器和类选择器
  • 依赖问题:引入多个css样式文件,引入的css文件会对后面的css文件造成影响
  • 打破隔离: 一旦涉及到一组样式,但是又有新的样式产生,可能会对原有的样式产生影响

解决方法

vue

在vue中,使用了scope css的方式来保证样式的唯一性,标签上不重复的生成data属性表示唯一性,编译后的css上也会生成这个选择器

react

css in js不是本身有的,是外部提供的

css in js

使用JavaScript作为语言以声明和可维护的方式描述样式。 它是一个高性能的JS到CSS编译器,它在运行时和服务器端工作。
扩展内联样式限制:支持所有的css原生功能
范围界定:唯一的选择器类名自动确定当前的 class 作用域,选择器之间无冲突
自动添加前缀:CSS 规则可以控制​自动添加前缀
代码共享:轻松地在 JS 和 CSS 之间共享常量和函数,灵活方便操作控制
轻量页面样式:只生成页面上当前 DOM 树会用到的样式

  • 在css in js中,hash会用于u企鹅人一段style是否插入,计算hash的方法就是将一段完整的css转换为hash。编写代码写的不是i最终的css,每次都需要重新序列化得到css然后再次计算hash,为渲染组件带来了额外的开销。
react中编写css的几种方法
  1. 使用className
  2. 内联样式 {{color: “red”}}
  3. css-loader(css-module)
	import styles from './App.css'
	const App = props => {
		return (
		<div className={style.app}>123</div>
	  	<div className={style['form-item']}>456</div>
	  )
  1. css-in-js
import { css, jsx } from '@emotion/core'
const color = 'white'
const App = props => {
  return (
	<div
	  className={css`
	    padding: 32px;
	    background-color: hotpink;
	    font-size: 24px;
	    border-radius: 4px;
	  `}
	>
	  This is test.
	</div>
  )
}
emotion
import React from 'react';
import { css } from 'emotion'

const color = 'white'

function App() {
  return (
    <div className={css`
      padding: 32px;
      background-color: hotpink;
      font-size: 24px;
      border-radius: 4px;
      &:hover {
        color: ${color};
      }
    `}>
      This is emotion test
    </div>
  );
}

export default App;
<html lang="en">
  <head>
    <title>React App</title>
    <style data-emotion="css">
      .css-czz5zq {
        padding: 32px;
        background-color: hotpink;
        font-size: 24px;
        border-radius: 4px;
      }
    </style>
    <style data-emotion="css">
      .css-czz5zq:hover {
        color: white;
      }
    </style>
  </head>
  <body>
    <div id="root">
      <div class="css-czz5zq">This is React.js test</div>
    </div>
  </body>
</html>
  1. 将样式写模板字符串
  2. 根据模板字符串生成class名,然后写道组件的class中
  3. 将生成的class名称以及class内容放到script组件中,然后放到html的head中

postcss

postcss提供了一个解析器,能够将css转换为抽象语法树,能够为css提供额外的功能,利用postcss的功能,开发一些插件,处理css
组成: css parser css节点数 source map生成器 生成节点树串
css => parse => plugin 1 => plugin 2 => ... => stringifier => new css
读取css文件,通过parser将css解析为抽象语法树,将抽象语法树传递给任意数量的插件处理,通过诸多插件进行数据处理,插件见传递的数据就是ast树,将处理完成的ast转换为字符串。
在这里插入图片描述

tailwindcss

存在jit(just in time),在编译过程中去扫描html文件,然后生成对应的样式。

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

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

相关文章

企业数字化转型:打造数字资产开启创新与可持续发展之路

在当今数字经济时代&#xff0c;企业面临激烈竞争与变化的客户需求。传统信息化已不足以支撑发展&#xff0c;需将其提升到数字化高度&#xff0c;以打造数字资产为目标进行转型。 信息化主要是对业务流程进行优化和管理&#xff0c;关注数据采集、存储与处理及业务流程自动化。…

源之东方受邀出席第三届通证经济发展论坛暨绿色消费生态高质量发展大会

2024 年 9 月 27 日&#xff0c;在美丽的博鳌&#xff0c;由中国国际经济技术合作促进会主办&#xff0c;中国国际经济技术合作促进会通证经济工作委员会承办的 2024&#xff08;第三届&#xff09;通证经济发展论坛暨绿色消费生态高质量发展大会隆重召开。本次大会主题是“聚焦…

一键脚本部署单机redis

这里写目录标题 背景步骤总结 背景 现在有要求&#xff0c;将所有安装步骤可复用化 。sh脚本即可完成如上要求&#xff0c;减少人安装带来的不确定性因素。 需要安装包的可以加我微信。 步骤 在/root 目录下创建一个文件我们给他命名为 autoRedis.sh vi autoRedis.sh然后…

ruoyi若依平台——部门管理部分源码分析

来都来了给我点个赞和收藏关注一下在走呗~~~~&#x1f339;&#x1f339;&#x1f339; 目录 数据库结构&#xff1a; 一、部门查询 二、部门新增 三、后端 Controller——SysDeptController部门CRUD&#xff1a; 1.获取部门列表信息&#xff1a; 2.排除特定节点的部门列…

C++ 算法学习——1.8 单调栈算法

单调栈&#xff08;Monotonic Stack&#xff09;是一种在解决一些数组或者链表相关问题时非常有用的数据结构和算法。在C中&#xff0c;单调栈通常用于解决一些需要快速找到元素左右第一个比当前元素大或小的问题。 定义&#xff1a; 单调栈实际上是一个栈&#xff0c;但是与普…

《大规模语言模型从理论到实践》第一轮学习--强化学习(RLHF、PPO)

个人学习笔记,如有错误欢迎指出。 一、强化学习的意义 RLHF(Reinforcement Learning from Human Feedback):强化学习(Reinforcement Learning)结合人类反馈(Human Feedback)来微调大语言模型。 大语言模型的训练步骤包括:预训练、指令微调(SFT)、对齐。 对齐(a…

NVM 安装步骤

NVM 安装步骤 文章目录 NVM 安装步骤一、NVM 是什么二、用途三、安装步骤详解1. 下载与安装2. 验证安装3. 安装Node.js4. 使用安装的Node.js版本5. 验证Node.js安装 四、NVM 常用命令1. 查看已安装的Node.js版本2. 安装指定版本的Node.js3. 卸载指定版本的Node.js4. 切换到已安…

Redis面试题——第四篇

1. Redis主从复制的常见拓扑结构有哪些 一主多从&#xff1a;这是最基本的拓扑结构&#xff0c;包含一个主节点和多个从节点&#xff0c;所有写操作都在主节点上执行&#xff0c;而读操作可以在从节点上进行&#xff0c;以提高读取速度和负载均衡。 树状主从结构&#xff1a;从…

小米澎湃工具箱,一键获取权限

Hyper工具箱已初步支持魅族设备一键获取权限&#xff0c;配置扫描与ROM包索引均已适配Flyme。 支持小米、魅族手机 功能不止刷机、获取权限更多功能下载体验&#xff01; 下载&#xff1a;https://pan.quark.cn/s/4e78f870813f

试着了解YOLOx

在特征提取上来说&#xff0c;主干部分使用了focus网络结构&#xff0c;对特征点进行了划分&#xff0c;将特征点信息堆叠到通道上。 同时采用CSPnet结构&#xff0c;在残差网络堆叠的同时&#xff0c;构建大的残差边&#xff0c;经过少量处理直接连接到最后。 过去的YOLO将分…

数据库系统概论之关系数据库标准语言SQL(一)【超详细】

教材&#xff1a; 数据库系统概论&#xff08;第6版&#xff09;王珊,杜小勇,陈红编著 目录 一、SQL概述 1.1 SQL 的产生与发展 1.2 SQL的特点 1.3 SQL的基本概念 二、数据定义 2.1 数据库的定义 2.2 数据表的定义 2.3 模式的定义 一、SQL概述 1974年IBM为关系DBMS设…

组合式二值编码

论文名称&#xff1a;《A Practical Approach to 3D Scanning in the Presence ofInterreflections, Subsurface Scattering and Defocus》 简介&#xff1a;组合式二值编码&#xff08;包含传统格雷码&#xff0c;XOR-02&#xff0c;XOR-04&#xff0c;minSW&#xff09;&…

Java学习Day25:基础篇15:反射

Java 反射&#xff08;Reflection&#xff09; 1.前置反应 是 Java 编程语言的一个强大特性&#xff0c;它允许程序在运行时检查或修改类的行为。这包括获取类的信息&#xff08;如字段、方法、构造函数等&#xff09;&#xff0c;以及动态地创建对象、调用方法、访问和修改字…

linux的学习第二天

1.vmware的功能&#xff1a; 快照 创建快照&#xff1a; 拍摄此虚拟机的快照&#xff1a;记录保存虚拟机的当前状态&#xff0c;如果系统出现故障&#xff0c;可以通过快照还原&#xff08;错删系统时可以找到快照的系统状态&#xff0c;然后恢复系统&#xff09; 恢复快照…

java项目之精品在线试题库系统设计与实现源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的精品在线试题库系统设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 精品在线试…

sentinel dashboard分布式改造落地设计实现解释(二)-分布式discovery组件

discovery discovery负责维护app/机器资料库&#xff0c;transport健康检测&#xff0c; transport上下线处理。discovery关键是分布式存储&#xff0c;后续研究一下raft&#xff0c;其复制&#xff0c;状态机&#xff0c;快照技术&#xff0c;但个人觉得&#xff0c;discover…

软件分享 | 截图工具 Snipaste

今天分享&#xff1a; 今日分享的是一款截图界的神器——Snipaste&#xff01; 特点&#xff1a; &#x1f3a8; 超清截图&#xff1a; Snipaste的截图功能&#xff0c;清晰度超乎你的想象。无论是工作文档还是游戏画面&#xff0c;都能一键捕捉&#xff0c;细节尽在掌握。 …

Excel:将一列拆分成多列

实现的效果是&#xff1a; 操作步骤如下&#xff1a; 1.选中列 → 点击菜单栏中的"数据" → 分列 2.选择"分列符号"&#xff0c;点击下一步 3.我想要按照空格分列&#xff0c;就选择空格 4.点击完成&#xff0c;就可以实现分列的效果了

uniapp学习(004-2 组件 Part.2生命周期)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第31p-第p35的内容 文章目录 组件生命周期我们主要使用的三种生命周期setup(创建组件时执行)不可以操作dom节点…

Shell编程-if判断

作者介绍&#xff1a;简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们前面学习了那么多命令&#xff0c;以及涉及到部分逻辑判断的问题。从简单来说&#xff0c;他就是Shell编…