Tailwind CSS样式优先级控制
前情
Tailwind CSS 是一个原子类 CSS 框架,它将基础的 CSS 全部拆分为原子级别,能达到最小化项目CSS。它的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何模板中的 CSS 类名,然后生成相应的样式代码并写入到一个静态 CSS 文件中。Tailwind CSS 快速、灵活、可靠,没有运行时负担。自从接触了Tailwind CSS后,目前已经是我项目的标配了。我最近接手的uni-app项目就被我引入了Tailwind CSS,大大提高了书写样式的开发体验和效率。
问题:
原子化CSS都把样式都打平在同级了,样式优化级只跟出现的先后顺序有关,如果是纯使用Tailwind CSS开发的项目是问题不大的,但是很多时候都是在原有项目上增加Tailwind CSS,我目前手上项目就是我接手后才引入Tailwind CSS的,开发中总是会遇到因为样式优先级不够导致样式冲突不生效的问题,特别是修改原有项目样式的时候被优先级问题困扰。
解决方案1:
通过修改Tailwind.config.js配置让所有原子化CSS都增加!important后辍来全局提高Tailwind CSS生成的样式的优先级
const path = require("path");
const resolve = (p) => {
return path.resolve(__dirname, p);
};
/** @type {import('tailwindcss').Config} */
module.exports = {
// 增加此配置让所有Tailwind CSS样式增加!important后辍达到提高样式优先级
important: true,
content: [
"./index.html",
"./pages/**/*.{html,js,ts,jsx,tsx,vue}",
"./components/**/*.{html,js,ts,jsx,tsx,vue}"
].map(resolve),
// ...
corePlugins: {
// 跨多端可以 h5 开启,小程序关闭
preflight: false,
}
};
问题:此方案全局提高所有原子化样式优先级有点太过头,真正项目并不是所有样式都会有样式冲突的,所以不需要所有的样式都增加!important,导致过多的无用后辍。
解决方案2:
通过修改Tailwind.config.js配置,增加样式层级来提高提高Tailwind CSS生成的样式的优先级
const path = require("path");
const resolve = (p) => {
return path.resolve(__dirname, p);
};
/** @type {import('tailwindcss').Config} */
module.exports = {
// 增加此配置让生成的原子化CSS都会在此样式层级下,以增加原子化CSS的层级来提高样式优先级
important: 'my-app',
content: [
"./index.html",
"./pages/**/*.{html,js,ts,jsx,tsx,vue}",
"./components/**/*.{html,js,ts,jsx,tsx,vue}"
].map(resolve),
// ...
corePlugins: {
// 跨多端可以 h5 开启,小程序关闭
preflight: false,
}
};
问题:此方案虽然能提高样式优先级,但是提高的权重有限,可能并不适合所有场景。
解决方案3(推荐):
单独为特定原子化CSS增加!important后辍来提高样式优先级,也是我一直在使用的方案,我最近接手的一个项目发现前一开发在全局对图片标签宽高做了重置了,我不得不在设置图片宽高的时候增加!前辍以让它生成的原子化CSS添加!important后辍
<image
src="../static/wen.webp"
mode="aspectFill"
class="!zhs-w-[44rpx] !zhs-h-[44rpx]"
/>
最终生成的原子化CSS如下:
.izhs-w-_44rpx_ {
width: 22px !important;
}
.izhs-h-_44rpx_ {
height: 22px !important;
}
总结
方案1和方案3的原理是!important可以让样式权重提高到最高来达到解决样式冲突的问题,而方案2的方式是通过样式层级来提高样式优先级。
方案3是我个人觉得最优化的解决方案,即能解决样式优先级问题,也能保证修改的范围最小化。
此文章虽然是以我手上的uni-app项目作为演示示例,一些写法跟平时的web项目有一些区别,但web项目也是一样支持的。
如果你有更好的提高Tailwind CSS样式优先级的方案,欢迎留言,一起讨论学习进步吧。
友情提示
uni-app项目一般使用的IDE是官方自带的HBuilder x,为了更好的开发体验安装如下插件,即可实现样式名提示了,插件地址:Tailwind CSS语言服务 - DCloud 插件市场。

安装插件开发者工具会有莫名的报错,可以忽略,从最近一二周的使用体验上来说是没有什么问题的。
Tailwind CSS样式优先级控制的更多相关文章
- Tailwind CSS in Action
Tailwind CSS in Action Tailwind CSS是一个高度可定制的低级CSS框架,它为您提供了构建定制设计所需的所有构造块,而无需烦恼要覆盖的烦人的自以为是的样式 https:/ ...
- css样式让input垂直居中
css样式让input垂直居中 css代码: .div1{ border: 1px solid #CCC; width:1120px; height:40px; margin:auto; displa ...
- 深度理解CSS样式表,内有彩蛋....
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js设置css样式.
在js设置css样式做法 var obj = document.getElementById('div'); obj.style.width = '100px'; obj.style.height = ...
- CSS样式表
CSS样式及属性 样式标的基本概念 样式表的分类 1.内联样式表 和html联合显示,控制精确,但可重用性差,冗余多. 例:<p style="font-size:14px;" ...
- 脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
问题描述: 由于有一次工作原因,就是将某个文件夹下的所有图片,通过CSS描述他们的属性,用的时候就可以直接引用.但是我觉得那个文件夹下的图片太多,而且CSS文件的格式又有一定的规律,所有想通过脚本来生 ...
- jQuery所支持的css样式
jQuery所支持的css样式 backgroundPosition borderWidth borderBottomWidth borderLeftWidth borderRightWidth bo ...
- Yii2 assets注册的css样式文件没有加载
准备引入layui.css文件的,在LayuiAssets类中已经配置了资源属性 <?php namespace frontend\assets; use yii\web\AssetBundle ...
- 获取元素计算后的css样式封装
获取元素计算后的css样式封装: function getCss(obj,attribute) { if(obj.currentStyle) { return obj.currentStyle[att ...
- JS实战 · 仿css样式选择器
代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/ ...
随机推荐
- QT与JavaScript之QT6应用程序与JavaScript脚本集成开发:C++应用程序能与JavaScript实现相互调用吗?
简介 QT6框架中提供了JavaScript引擎类型QJSEngine ,可用于实现 C++应用程序和JavaScript代码之间的相互调用. 目录 什么是 ECMAScript ? JavaScri ...
- 第16天:信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件
#CDN配置: 配置1:加速域名-需要启用加速的域名 配置2:加速区域-需要启用加速的地区 配置3:加速类型-需要启用加速的资源 #参考知识: 超级Ping:http://www.17ce.com/ ...
- vue.config.js 常用的属性
// vue.config.js 文件是脚手架的配置文件 const { defineConfig } = require("@vue/cli-service"); module. ...
- 内核级流量治理引擎Kmesh八大新特性解读
本文分享自华为云社区<内核级流量治理引擎 Kmesh v0.5 发布!进击的Sidecarless服务网格>,作者:云容器大未来. 我们非常高兴地宣布 Kmesh v0.5.0 的发布.首 ...
- 19 Transformer 解码器的两个为什么(为什么做掩码、为什么用编码器-解码器注意力)
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- 小集训 CSP-S 模拟赛
DAY 1 A.喜剧的迷人之处在于 小思维题不必细讲 B. 镜中的野兽 状压+容斥 $ gcd (x) + lcm(x) = m $ ,可以得知 $ gcd(x) $ 一定是 m 的因子,那么就可以枚 ...
- 云原生爱好者周刊:在浏览器中运行 Linux 系统 | 2022-10-10
Confluent 官网已经放出了<Kafka 权威指南第二版:大规模实时数据和流处理>,相比于第一版新增了以下内容: Kafka 管理客户端概述: API 更新到最新的 Apache K ...
- 快速部署kafka集群和可视化界面
3台机器部署kafka集群的分布 10.1.161.111 -> kafka(1个节点)+ zookeeper(一个节点)+ kowl(一个节点) 10.1.161.112 -> kafk ...
- Windows下如何用virtualenv创建虚拟环境
虚拟环境可以有效的解决不同项目需要不同环境的问题,虚拟环境最大的好处就是可以将我们的开发环境进行隔离,让彼此之间不互相受影响.一.Windows下创建虚拟环境1.虚拟环境需要用到的库是virtuale ...
- 从零开始学逆向CTF比赛,免费参加,欢迎来玩!
大家好,我是轩辕. 告诉大家一个好消息:我准备了一次逆向CTF比赛,面向所有人开放,无需购买课程,优秀的小伙伴还有奖励,参赛方式在文末会介绍,欢迎大家一起来玩. 举办这次CTF比赛,是为了检验大家从零 ...