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 ...
随机推荐
- 去除小程序scroll-view产生的横向滚动条
<template> <view class="page-demo"> <scroll-view class="scrool-more&qu ...
- 深入理解Mybatis分库分表执行原理
前言 工作多年,分库分表的场景也见到不少了,但是我仍然对其原理一知半解.趁着放假前时间比较富裕,我想要解答三个问题: 为什么mybatis的mapper.xml文件里的sql不需要拼接表名中的分表? ...
- day04-数组
Java数组 [ 任务列表 ] 1.数组 2.二维数组 3.其他 --------------------------------------------------------- 1.数组 数组:存 ...
- 首届超算互联网峰会!天翼云弹性高性能计算E-HPC亮相!
4月11日,首届超算互联网峰会暨国家超算互联网平台上线仪式在天津顺利举办,来自部委.省级科技厅.中国科学院.中国工程院.计算产业链相关企业等专家.代表数百人共聚一堂,见证了这一历史性时刻.天翼云作为副 ...
- Q:记录一次ssh毫无规律的断线
查找tailf /var/log/secure 网上一般是这三个原因 1.ssh服务端配置 vim /etc/ssh/sshd_config #客户端每隔多少秒向服务发送一个心跳数据,0代表不发送#C ...
- mybatis之生命周期及作用域
SqlSessionFactoryBuilder 一旦创建了SqlSessionFactory之后就没有作用了 局部变量 SqlSessionFactory 可以理解为数据库的连接池 SqlSessi ...
- windows jdk环境变量配置
新建环境变量[classpath]变量值为[.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar] 新建环境变量[JAVA_HOME]变量值为jdk的安装目录 如:[ ...
- JWT权限验证,兼容多方式验证
前言 许久没写博文了,整合下这段时间所学吧,前进路上总要停下来回顾下学习成果. 本篇记录下项目的权限验证,WebApi项目中用权限验证来保证接口安全总是需要的,然而权限验证的方式多种多样,博主在项目中 ...
- vue--Element-UI Table 表格指定列添加点击事件
最近使用了Element-UI中的Table表格,因为需求需要在指定的列点击跳转,所以必须添加个点击事件,我这里是弹框展示table再点击跳转的,如图所示: 下面是我实现具体的代码(只是代码的一部分, ...
- wxpython SetValue 获取列表数据获取不到
self.m_textCtrl4.SetValue(files) 同样的方法获取其他值就获取到了 ,后来想了想files是列表数据,于是将类型变为str型成功 self.m_textCtrl4.Set ...