当前位置: 首页 > news >正文

CSS原子化

目录

一、定义

二、原子化工具

2.1、tailwind

2.1.1、以PostCss插件形式安装

2.1.2、不依赖PostCss安装

2.1.3、修改原始配置

2.2、unocss

三、优缺点

3.1、优点

3.2、缺点

一、定义

定义:使用一系列的助记词,利用类名来代表样式

二、原子化工具

2.1、tailwind

翻译过来是“顺风”的意思。

官网:Installation - Tailwind CSS

2.1.1、以PostCss插件形式安装

如果是单纯的文件夹:

(1)、初始化:npm init -y

(2)、安装3个插件:npm i tailwindcss postcss-cli autoprefixer -D

(3)、生成相关配置文件:npx tailwind init -p

(4)、在文件夹里新建src,在sc下新建style.css

@tailwind base;
@tailwind components;
@tailwind utilities;

(5)、将package.json里"scripts"的内容改为:"build": "postcss src/style.css -o dist/tailwind.css"

(6)、npm run build 成功后就可以看到dist/tailwind.css,即编译成功。(注意:node版本一定在16+,不然编译报错。)

(7)、以index.html为例:

<link rel="stylesheet" href="tailwind.css">
<div class="text-base p-1 border border-black border-solid"></div>
//==========================等同于==============================
.text-base {font-size: 16px;
}
.p-1 {padding: 4px;
}
.border {border-width: 1px;
}
.border-black {border-color: black;
}
.border-solid {border-style: solid;
}

剩下的官网里都有,可以自己去找。

2.1.2、不依赖PostCss安装

几乎和上面一样,就是这两个命令行npm i tailwindcss autoprefixer -Dnpx tailwind init稍有改变,配置文件内容变成了   "build": "tailwind build src/style.css -o dist/tailwind.css"。

2.1.3、修改原始配置

以“text-base”为例:

数组里的两个元素分别是 font-size 和 line-height 两个样式。

module.exports = {content: [],theme: {extend: {padding: {'1': '30px'},fontSize: {'base': ['30px', '2rem']}},},plugins: [],
}
//================修改后的p-1和text-base
.p-1 {padding:30px;
}
.text-base {font-size:30px;line-height:2rem;
}

原子类名太多很难记住,不能每次都去查看文档,可以安装插件Tailwind CSS IntelliSense解决。

2.2、unocss

UNO翻译过来是“联合国组织”的意思。

官网:UnoCSS: The instant on-demand Atomic CSS engine

原子类名太多很难记住,不能每次都去查看文档,可以安装插件UnoCss或者To Unocss解决。

(1)、安装:

npm i unocss @iconify-json/ep @unocss/preset-rem-to-px @unocss/transformer-directives -D

@iconify-json/ep ==> 是Element Plus图标库 Icônes;

@unocss/preset-rem-to-px ==> 将unocss自带的rem转为px;

@unocss/transformer-directives ==>可以使用@apply、@screen、theme函数

(2)、vite.config.ts:

import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'
export default defineConfig({plugins: [UnoCSS(),],
})

(3)、创建一个 uno.config.ts文件:

import presetRemToPx from '@unocss/preset-rem-to-px'
import transformerDirectives from '@unocss/transformer-directives'
import { defineConfig, presetAttributify, presetUno, transformerVariantGroup, presetIcons } from 'unocss'
export default defineConfig({presets: [presetAttributify(),presetUno(),presetRemToPx({baseFontSize: 4}),//eg:mt-1或转换为margin-top:1pxpresetIcons({scale: 1.2,warn: true})//自动引入图标配置],transformers: [transformerVariantGroup(), transformerDirectives()],rules: [// m-1可转换为margin:0.25rem// [/^m-(\d+)$/, ([, d]) => ({ margin: `${d / 4}rem` })],],//自定义配置项shortcuts: [{'flex-center': 'flex items-center justify-center',//垂直居中'flex-end': 'flex items-center justify-end',//放在最后'flex-middle': 'flex items-center',//垂直居中'flex-between': 'flex items-center justify-between',//分开两边'flex-col-center': 'flex flex-col justify-center',//竖着居中}]//自定义属性  一个属性可以对应多个unocss类值
})

(4)、main.ts全局配置:

import 'virtual:uno.css'

(5)、使用:

(6)、图标应用:

<div i-ep:dish></div>
<i w110 h100 block i-ep:switch-button></i>

三、优缺点

3.1、优点

(1)、随着业务增长,css文件大小的增长放缓了;

(2)、HTML结构可以随处移动,同样样式不变;

(3)、样式会随着HTML结构删除的同时一起被删除

(4)、节省了为类名取名字的精力。

3.2、缺点

(1)、定义原子类(记住类名)耗费精力;

(2)、HTML结构变得臃肿

(3)、团队合作时,解读其他成员代码耗费时间;

原子化工具还有windi...等等,这里着重介绍上面两种。

相关文章:

CSS原子化

目录 一、定义 二、原子化工具 2.1、tailwind 2.1.1、以PostCss插件形式安装 2.1.2、不依赖PostCss安装 2.1.3、修改原始配置 2.2、unocss 三、优缺点 3.1、优点 3.2、缺点 一、定义 定义&#xff1a;使用一系列的助记词&#xff0c;利用类名来代表样式。 二、原子化…...

【Python的pip配置、程序运行、生成exe文件】

Python的pip配置、程序运行、生成exe文件 一、安装Python 通过官网下载对应的版本&#xff0c;安装即可。 下载地址&#xff1a;https://www.python.org/downloads/ Python标准库查看&#xff08;Python自带库&#xff09; Python 标准库文档 安装Python的时候&#xff0c…...

神经网络习题

不具有权重共享的网络是&#xff1a; **多层感知机&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;&#xff1a; ** 特点&#xff1a;每一层的每一个神经元都与上一层的每一个神经元全连接&#xff0c;权重独立于每个连接&#xff0c;不存在权重共享。 权重共享…...

deepstream段错误

&#x1f610; 错误&#xff1a; 探针中由于使用了pyds.get_nvds_buf_surface(hash(gst_buffer), frame_meta.batch_id)导致的段错误&#xff08;segmentation fault&#xff09;。 解决方式&#xff1a;...

《梦醒蝶飞:释放Excel函数与公式的力量》10.1.1函数简介

10.1.1函数简介 BIN2DEC函数是Excel中用于将二进制数转换为十进制数的函数。它在处理二进制数时非常有用&#xff0c;尤其是在电子工程、计算机科学等领域。 10.1.2函数语法&#xff1a; BIN2DEC(number) number&#xff1a;这是要转换的二进制数&#xff0c;必须是以字符串…...

Bert 变种, T5模型

NLP-预训练模型-2019-NLU&#xff1a;DistilBERT【 BERT模型压缩】【模型大小减小了40%&#xff08;66M&#xff09;&#xff0c;推断速度提升了60%&#xff0c;但性能只降低了约3%】_distillbert-CSDN博客 https://zhuanlan.zhihu.com/p/673535548 大语言模型系列-T5_t5模型…...

技术赋能政务服务:VR导视与AI客服在政务大厅的创新应用

在数字化转型的浪潮中&#xff0c;政务大厅作为服务民众的前沿阵地&#xff0c;其服务效率和质量直接影响着政府形象和民众满意度。然而&#xff0c;许多政务大厅仍面临着缺乏智能化导航系统的挑战&#xff0c;这不仅增加了群众的办事难度&#xff0c;也降低了服务效率。维小帮…...

大模型备案全网最详细流程【附附件】

本文要点&#xff1a;大模型备案最详细说明&#xff0c;大模型备案条件有哪些&#xff0c;《算法安全自评估报告》模板&#xff0c;大模型算法备案&#xff0c;大模型上线备案&#xff0c;生成式人工智能(大语言模型)安全评估要点&#xff0c;网信办大模型备案。 大模型备案安…...

0090__【Git系列】merge和rebase的区别

【Git系列】merge和rebase的区别_rebase和merge的区别-CSDN博客 git中rebase和merge的区别是什么-git-PHP中文网 https://blog.51cto.com/qzcsbj/9444199...

谈面向任务的多轮对话系统(TOD)

面向任务对话系统&#xff08;Task-Oriented Dialogue (TOD) Systems)主要是为解决特定任务的&#xff0c;比如订票任务&#xff08;订机票&#xff0c;电影票等&#xff09;&#xff0c;预定饭店等。这种对话往往需要多轮对话才能够完成。 多轮对话的例子 客户预定一个餐厅的…...

汇凯金业:如何判断黄金的买入时机

黄金&#xff0c;作为全球公认的避险资产&#xff0c;其价格波动受到多种因素的影响&#xff0c;包括经济数据、货币政策、地缘政治风险等。对于投资者而言&#xff0c;把握黄金的最佳买入点是实现投资收益最大化的关键。本文将探讨影响黄金价格的主要因素&#xff0c;并提供一…...

tomcat 项目迁移,无法将项目作为服务service启动

背景 测试服务器需要迁移到正式服务器上&#xff0c;为了方便省事&#xff0c;将测试服务器上的一些文件直接复制到正式服务器 问题 使用startup启动项目之后&#xff0c;可以直接使用使用tomcat9w启动&#xff0c;或者作为服务service启动的时候&#xff0c;显示无法访问到资源…...

java中 使用数组实现需求小案例(二)

Date: 2024.07.09 16:43:47 author: lijianzhan 需求实现&#xff1a; 设计一个java类&#xff0c;java方法&#xff0c;使用Random函数&#xff0c;根据实现用户输入随机数生成一个打乱的数组。 package com.lin.java.test;import java.util.Arrays; import java.util.Rando…...

【删库跑路】一次删除pip下载的所有第三方库方法

进入命令行&#xff0c;先list看下库存 pip list导出所有的第三方库至一文件列表 pip freeze >requirements.txt按照列表卸载所有库 pip uninstall -r requirements.txt -y再list看下&#xff0c;可见库存已清空...

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意&#xff1a;B树中B不是代表二叉树&#xff08;binary&#xff09;&#xff0c;而是代表平衡&#xff08;balance&#xff09;&#xff0c;因为B树是从最早的平衡二叉树演化而来&#xff0c;但是B树不是一个二叉树。 B树的高度一般在2~…...

解决 Docker 容器镜像拉取难题:全面指南

一、引言 在使用 Docker 容器的过程中&#xff0c;经常会遇到镜像拉取慢甚至无法下载的问题&#xff0c;这给开发和部署工作带来了不小的困扰。本文将深入探讨这一问题的原因&#xff0c;并提供多种有效的解决方案。 二、问题原因分析 网络限制 本地网络带宽不足或存在网络拥…...

python基础语法笔记(有C语言基础之后)

input()用于输入&#xff0c;其有返回值&#xff08;即用户输入的值&#xff09;&#xff0c;默认返回字符串。括号里可放提示语句 一行代码若想分为多行来写&#xff0c;需要在每一行的末尾加上“\” 单个“/”表示数学中的除法&#xff0c;不会取整。“//”才会向下取整。 …...

【面试八股总结】线程基本概念,线程、进程和协程区别,线程实现

一、什么是线程&#xff1f; 线程是“轻量级进程”&#xff0c;是进程中的⼀个实体&#xff0c;是程序执⾏的最小单元&#xff0c;也是被系统独立调度和分配的基本单位。 线程是进程当中的⼀条执行流程&#xff0c;同⼀个进程内多个线程之间可以共享代码段、数据段、打开的文件…...

Java核心技术【二十】Java泛型的基本概念和原理详解

Java泛型的基本概念和原理详解 一、泛型的基本概念 Java泛型&#xff08;Generics&#xff09;是Java SE 1.5&#xff08;JDK 5&#xff09;引入的一个新特性&#xff0c;它提供了一种在编译时期进行类型检查的方式&#xff0c;允许程序员在定义类、接口和方法时指定类型参数…...

Android Studio Download Gradle 时慢问题解决

1.腾讯gradle 下载&#xff1a;后面拼接版本&#xff08;gradle-8.0-bin.zip&#xff09; https://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip 2.Android Studio 配置&#xff1a;setting-->gradle-->Use Gradle from 选择本地文件夹&#xff08;解压后的bi…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...