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 ...
随机推荐
- StarUML画类图
1.Classes说明 [1]Class 类 [2]Interface 接口 [8]Generalization A与B的泛化关系,A继承B.继承非抽象类 [9]Interface Realizat ...
- MacOS15+Xcode版本16+对ReactNative项目进行编译和上传到APPStore的踩坑记录
作者:Kovli 重要通知:红宝书第5版2024年12月1日出炉了,感兴趣的可以去看看,https://u.jd.com/saQw1vP 红宝书第五版中文版 红宝书第五版英文原版pdf下载(访问密码: ...
- Hbuilder使用快捷键
Hbuilder的使用 1.Hbuilder基本操作设置基本外观文字大小,申请账号.2.Hbuilder快捷键- 新建菜单: ctrl + N- 新建: ctrl + N- 关闭: ctrl ...
- Sqoop2 - [01] 安装部署
1.启动Hadoop集群 2.将Sqoop2的安装包上传到合适的目录中解压 tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz 3.修改Hadoop的配置文件cor ...
- CF2039D Shohag Loves GCD
思路(贪心 + 唯一分解定理) 这个题其实只需要考虑一件事:记答案数组为 \(a\),对于两个不同下标 \(i\) 和 \(j\),当 \(\gcd(i,j) = \min(i,j)\) 时,我们只需 ...
- 通用C++ Makefile
点击查看代码 ///////////////////////////////////////////// CC = g++ CFLAGS=-Wall -O2 TARGET = main SRCS := ...
- FastAPI Cookie 和 Header 参数完全指南:从基础到高级实战 🚀
title: FastAPI Cookie 和 Header 参数完全指南:从基础到高级实战 date: 2025/3/9 updated: 2025/3/9 author: cmdragon exc ...
- svn提示Node remains in conflict的解决办法
svn 更新提示Node remains in conflict 这个时候不管svn up多少次,都无法更新到最新的内容 解决办法: svn revert --depth=infinity * 其中* ...
- [I.1] 个人作业:阅读和提问
个人作业:阅读和提问 项目 内容 这个作业属于哪个课程 2025年春季软件工程(罗杰.任健) 这个作业的要求在哪里 [I.1] 个人作业:阅读和提问 我在这个课程的目标是 学习并掌握软件工程方法,与团 ...
- 【Python】Flask API 登录
Flask API 登录 零.起因 最近要写uniapp客户端,服务器使用的是Python的Flask框架,为了实现用户登录,在网上查到了一些Flask的扩展,其中比较简单的就是flask_httpa ...