Tailwind CSS一些你需要记住的原子类
前情
Tailwind CSS 是一个原子类 CSS 框架,它将基础的 CSS 全部拆分为原子级别。它的工作原理是扫描所有 HTML 文件、JavaScript 文件以及任何模板中的 CSS 类名,然后生成相应的样式代码并写入到一个静态 CSS 文件中。Tailwind CSS 快速、灵活、可靠、没有运行时负担。自从接触了Tailwind CSS后,目前已经是我项目的标配了。
使用Tailwind CSS有快二年了,有插件的支持和一些原子化类名本身就有一定语义在使用上还是比较流畅的,但是有一些原子化类名是我每次使用心里都会咯咚一下的,费此思索的,还有一些特殊原子类是可以简化实现效果的,今天整理总结一下并当复习了。
先小思考一下
为了加深印象,我们采用先问后解答的方式,你可以看一下如下这些CSS应该用什么原子化类名,如果你都能轻松答出来,那这篇文章余下内容你也就不用再往下看了,省点精力去做点更棒的事情吧。
- 设置元素宽高?
- 文字加粗和斜体?
- 设置文字行高?
- 设置文字间距?
- 单行超出省略?
- 多行超出省略?
- 设置图片背景?
- 设置背景图片尺寸?
- 设置盒子阴影?
- 调整transform变换基点?
- 怎么使用伪类?
- 怎么使用伪元素?
看一看这些特殊原子化类名
对于上面这些CSS效果,是我平时工作中常碰到的,也是我在初始使用Tailwind CSS时候感觉并不是特别顺畅的地方,我们一起看一看吧。
设置元素宽高?
设置宽可以使用w-,设计高可以用h-,其实Tailwind CSS有提供更便捷的方式
- 对于正方形你可以直接使用size-[100px],它相当于你同时设置w-[100px] h-[100px]
- 撑满父级的宽高,除了使用w-[100%],你可以使用w-full,高度也是同理
- 对于铺满视口你可以使用w-[100vh],你也可以使用w-screen,高度也是同理
文字加粗和斜体?
这也粗细也不是特别绕的原子化类名,但是因为在一开始字体大小颜色都是text-开头类名的时候,就容易混淆,这个特别留意一下即可,我基本也只会记font-bold/font-normal,对于其它的我是直接使用font-[500]这样来控制精细,顺便告诉你一个事,绝大部浏览器只能渲染出font-normal(font-[400])和font-bold(font-[700]),你正常按设计稿写即可,至于渲染成什么样那就交给浏览器了,优雅降级

文字斜体也就二个样式名italic(斜体)/not-italic(正常文本),容易受text-/font-开头的原子化类名影响,其实是特殊的二个原子化样式名
设置文字行高?
CSS的行高样式是 line-height,但是Tailwind CSS里面设置行高是使用的leading-,例如leading-[1.5em]/leading-[36px],我遇到的第一个让我蒙的原子化样式就是这个,我是完全想不到与line-height有什么相关性,只能记住了
设置文字间距?
文字这一块第二个让我蒙的就是文字间距,因为CSS里设置文字间距是letter-spacing,但是Tailwind CSS里面设置文字间距是使用的tracking-,例如tracking-[10px],我第一时间想到的是输入letter好让插件带出来,但是并没有,感觉只能记住了
单行超出省略?
我开始使用Tailwind CSS实现单行省略的时候都是使用几个原子化类别组合来实现的,后面才发现它有提供一个组合的原子类名叫做truncate,你只需要设置一下宽度即可实现单行的文本省略了
多行超出省略?
我一开始是添加一个类名,使用标准的CSS去实现的,也是后来才发现有现成的类名:line-clamp-1~line-clamp-6,如果你想自由指定多行那就用line-clame-[行数]
设置图片背景?
设置背景颜色是bg-color,设置图片是bg-[url(’../static/example.webp’)]
设置背景图片尺寸?
有提供bg-cover/bg-contain,这些都是一些自适应的不太可控的设置背景图片尺寸,我们有时间需要按自己要求的尺寸,那就用它bg-[length:750px_auto]
设置盒子阴影?
有提供一些现成的阴影的样式,但是对于前端各式各样的效果有些力不从心,依靠shadow-[0_35px_60px_-15px_rgba(0,0,0,0.3)]可以随心所欲定制你阴影效果
调整transform变换基点?
默认有提供一些特殊位置的变换基点原子化类名,如:origin-center/origin-top-right等等,但是如果想设置具体的数据就得使用origin-[33%_75%]
怎么使用伪类?
最常用的就是a标签的4个伪类,如link/visited/hover/active,一种是自身的伪类,一种是父级触发伪类修改子孙元素的样式
<!-- 自身伪类 -->
<button class="bg-violet-500 hover:bg-[red] focus:bg-[green] active:bg-[blue] ...">
Save changes
</button>
<!-- 父级伪类 -->
<a href="#" class="group ...">
<h3 class="text-slate-900 group-hover:text-white text-sm font-semibold">New project</h3>
</div>
<p class="text-slate-500 group-hover:text-white text-sm">Create a new project from a variety of starting templates.</p>
</a>
体验地址:https://play.tailwindcss.com/NRl6HgORQT
怎么使用伪元素?
伪元素用的最多的就是::before/::after,使用示例如下
<span class="after:content-['*'] after:ml-0.5 after:text-red-500 block text-sm font-medium text-slate-700">
Email
</span>
总结
本文收集了我平时使用Tailwind CSS开发项目,遇到的一些不太好理解的原子类,希望能对于正在准备入手或者已经在使用的人有一些小帮助;其实遇到真想不起来的也没必要不爽,那就大胆查文挡吧,对于使用Tailwind CSS实现比较复杂,你写常规CSS也不会冲突的,重要的实现项目需求。
如果你在使用中有其它更好的一些小发现,也不吝分享出来,一起学习一起进步。
温馨提示:用好官方文挡和插件
我第一次知道Tailwind CSS是同事推荐的,在以前我有听过原子化CSS的概念,知道那要记很多样式,导致有一定的心理压力,所以一开始是排斥的,但直到自己使用后才发现,在使用Tailwind CSS的时候其实并没有特别大的心理压力。主要原因如下:
- 大部分样式都很容易联想到,如文本:text-、背景:bg-、边框:border-、margin:m-、padding:p-,都是很容易理解的,甚至跟原始样式就有一定关系的,稍微用一用就记住了,实在想不想在官方文挡搜索很快也能找到答案
- 用好官方的插件,你不需要记住太多,有一定印象输入首字母就会有对应的提示
VS Code插件地址:Tailwind CSS IntelliSense - Visual Studio Marketplace
HBuilderX插件地址:Tailwind CSS语言服务 - DCloud 插件市场。因为我写这篇文章的时候正在开发uni-app的项目,附上HBuilderX下的提示效果图

WebStorm默认就支持Tailwind CSS提示,无需安装插件
Tailwind CSS一些你需要记住的原子类的更多相关文章
- css 框架——base.css,作用是重设浏览器默认样式和提供通用原子类。自己留存
今天发下我自己的 css 框架——base.css,作用是重设浏览器默认样式和提供通用原子类. @charset "utf-8"; /*! * @名称:base.css * @功能 ...
- CSS常用原子类base.css
在写css文件时,一些常用的属性我们完全可以把它单独提出来,提高复用性,能增加开发效率,下面是一些网站推荐的常用原子类,也是零度逍遥常用的,规定了一些字体,内外边距和宽高属性,一般写在base.css ...
- Tailwind CSS in Action
Tailwind CSS in Action Tailwind CSS是一个高度可定制的低级CSS框架,它为您提供了构建定制设计所需的所有构造块,而无需烦恼要覆盖的烦人的自以为是的样式 https:/ ...
- 【漫画】CAS原理分析!无锁原子类也能解决并发问题!
本文来源于微信公众号[胖滚猪学编程].转载请注明出处 在漫画并发编程系统博文中,我们讲了N篇关于锁的知识,确实,锁是解决并发问题的万能钥匙,可是并发问题只有锁能解决吗?今天要出场一个大BOSS:CAS ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 原子类java.util.concurrent.atomic.*原理分析
原子类java.util.concurrent.atomic.*原理分析 在并发编程下,原子操作类的应用可以说是无处不在的.为解决线程安全的读写提供了很大的便利. 原子类保证原子的两个关键的点就是:可 ...
- java多线程系类:JUC原子类:05之AtomicIntegerFieldUpdater原子类
概要 AtomicIntegerFieldUpdater, AtomicLongFieldUpdater和AtomicReferenceFieldUpdater这3个修改类的成员的原子类型的原理和用法 ...
- java多线程系类:JUC原子类:04之AtomicReference原子类
概要 本章对AtomicReference引用类型的原子类进行介绍.内容包括:AtomicReference介绍和函数列表AtomicReference源码分析(基于JDK1.7.0_40)Atomi ...
- java多线程系类:JUC原子类:03之AtomicLongArray原子类
概要 AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray这3个数组类型的原子类的原理和用法相似.本章以AtomicLongArray对数 ...
- Java多线程系列--“JUC原子类”02之 AtomicLong原子类
概要 AtomicInteger, AtomicLong和AtomicBoolean这3个基本类型的原子类的原理和用法相似.本章以AtomicLong对基本类型的原子类进行介绍.内容包括:Atomic ...
随机推荐
- 玩转云端|演唱会一票难求?快用天翼云边缘安全加速平台AccessOne!
本文分享自天翼云开发者社区<玩转云端|演唱会一票难求?快用天翼云边缘安全加速平台AccessOne!>,作者:天翼云社区官方账号 Super Idol的笑容虽然非常甜 无数粉丝宝宝的心里却 ...
- DeepSeek本地化部署超简单,比装个office还简单
一.背景 最近DeepSeek太火了,以至于每位伙伴都想尝试,都想说上几句.作为一名程序员,不仅想使用这个DeeptSeek的AI工具,还是用其做更多的事情,比如本地化部署.构建自己的知识库,或者其他 ...
- 5. Docker 本地镜像发布到阿里云
5. Docker 本地镜像发布到阿里云 @ 目录 5. Docker 本地镜像发布到阿里云 1. 本地镜像发布到阿里云流程 最后: 1. 本地镜像发布到阿里云流程 镜像的生成方法: 基于当前容器创建 ...
- FreeSql学习笔记——4.联表
前言 上一章节是查询,记录了简单的查询,比较看好的是分块.Dto映射和分页,除了简单的单表查询,更多的时候要用到联表查询,毕竟设计数据库是按照范式设计,FreeSql的联表操作有导航属性.Join ...
- [Ynoi2015] 我回来了 题解
\(NOIP\) 考前祈福. 实际上,每种伤害 \(d\) 打出的亵渎次数可以转化为: \[1+\max\limits_{i=0}^{\lceil\frac{n}{d}\rceil}(i[\sum\l ...
- nginx: [error] open() “/usr/local/var/run/nginx.pid” failed (2: No such file or directory)
- 【Unity】热更新原理与Xlua配置
[Unity]热更新原理与 Xlua 配置 热更新 直接理解即是让代码可以像资源包一样被运行时更新.当然它其实还一个名称叫热修复,即实现不重新打包项目也能把 Bug 修好,这也正是它常用的地方. 原理 ...
- 【论文随笔】深度推荐系统的自动化_一项调查(Automl for deep recommender systems_ A survey)
前言 今天读的论文为一篇于2021年1月发表在ACM Transactions on Information Systems的论文,本文是一篇关于深度推荐系统自动化机器学习(AutoML)的综述,由R ...
- linux系统升级/更新OpenSSL版本操作流程记录
问题描述:有时OpenSSL版本过老升级,或者需要更新OpenSSL版本 1.登录linux系统后输入openssl version 查看现在使用的版本 我的输入后版本信息为:OpenSSL 1.1. ...
- 【编程思想】C# delegate 委托的本质:方法对象的应用
一.前言 翻回之前写的博客,前期写的结构确实差很多, 这次细看了<委托那些事(一).(二)>,忍不住重新写一下,之前把简单的事情复杂化了. 为什么现在思维不一样了,有一点我认为是见识的计算 ...