前端样式库推广——TailwindCss

news2025/3/21 2:13:06

官方网址: https://tailwindcss.com/docs/installation/using-vite
中文官方文档:https://www.tailwindcss.cn/
github地址:tailwindcss
正在使用tailwindcss的网站:https://tailwindcss.com/showcase

一看github,竟然有高达86.5+stars,这库不简单
它就是近几年很流行的 “原子化CSS框架” ——TailwindCss!

在这里插入图片描述

tailwindcss

  • 一、TailwindCss功能展示
  • 二、有什么优势?
    • 1. 原子化css+高度定制化
    • 2. 支持伪类写法
    • 3. 强大的响应式
  • 三、相关辅助插件推荐
    • 1. Tailwind CSS IntelliSense 补全+提示
    • 2. 加强可读性-headwind (vscode)
    • 3. clsx的额外拓展
    • 4. tailwind-merge
  • 四、实战可能的问题
    • 1. Design tokens 与 Tailwindcss 结合使用
    • 2. 动态样式
    • 3. 公共样式的复用问题
  • 总结

一、TailwindCss功能展示

相信看了上图+以下效果之后,就了解这个库了,实质就是对于css写法进行优化的库,让开发重点关注html页面编写,不必将关注点切到css文件
在这里插入图片描述

二、有什么优势?

1. 原子化css+高度定制化

原子化即指单一原则,针对最小单位的css,它只对应一条具体的样式。
而TailwindCSS其实就是一个聚合了很多个原子类的库,提供了大量系统预设类名
在这里插入图片描述

2. 支持伪类写法

例如hover:focus:等,效果如下:在这里插入图片描述
而平常使用的内联Style中无法支持 ,也就是 hover: 等状态下的样式,必须在另外的css文件中编写。

3. 强大的响应式

TailwindCSS 提供响应式处理,例如sm:md:lg:,实现在不同宽度屏幕下的样式
产物单位会自动转换成rem,当然也可以是其它比如em或者px等。

tailwindcss vs 手写媒体查询
同样是实现多列布局对各个屏幕尺寸大小的适配,左右对比一下,可见优劣

  • display: grid: 使用grid布局
  • grid-cols-x:表示每行有x个

在这里插入图片描述
是不是少写很多行代码,懒癌党狂喜~~

对于需要特定数值的样式如宽高、字体大小和边距等,TailwindCSS提供的工具类默认为响应式,如 p-4 实际上是padding: 1rem。而对于特定值可以这样用:p-[12px],bg-[#fff]。
也可以在配置文件手动预设一些值。

三、相关辅助插件推荐

1. Tailwind CSS IntelliSense 补全+提示

官方给用户贴心地提供了对应的vscode插件,可以快速选择并提示css原用法:

在这里插入图片描述

2. 加强可读性-headwind (vscode)

  • 竖着写
  • headwind自动排序className
    - 'px-4 bg-blue-500 rounded  py-2

3. clsx的额外拓展

  • 基本拼接:将多个类名直接拼接
import clsx from 'clsx';
const MyComponent = () => {
    const classes = clsx('class1', 'class2');
    return <div className={classes}>{'这是一个带有组合类名的元素'}</div>;
};
export default MyComponent;
  • 条件拼接:可根据特定条件动态拼接,默认为true时拼接false时不做拼接
import clsx from 'clsx';
const MyButtonComponent = ({ isActive }) => {
    const classes = clsx('button', { 'active': isActive });
    return <button className={classes}>{'这是一个按钮'}</button>;
};
export default MyButtonComponent;
  • 多条件拼接:支持同时拼接多个条件的类名,原理同上
import clsx from 'clsx';
const MyButtonComponent = ({ isActive, isLarge }) => {
    const classes = clsx('button', {
        'active': isActive,
        'large': isLarge
    });
    return <button className={classes}>{'这是一个按钮'}</button>;
};
export default MyButtonComponent;

4. tailwind-merge

解决多个原子CSS结合时的冲突,可以清除冗余的类名,只保留最后生效的。

import clsx from 'clsx';
import { twMerge } from 'tailwind-merge'

const MyComponent = () => {
    const classes = twMerge('px-2 py-1 bg-red hover:bg-green', 'p-3 bg-[#ffffff]');
    
    return <div className={classes}>{'组合类'}</div>;
    /*'hover:bg-green p-3 bg-[#ffffff]'*/
};
export default MyComponent;

可与clsx结合使用:twMerge(clsx( ))

四、实战可能的问题

1. Design tokens 与 Tailwindcss 结合使用

design-tokens.json:

{
    "color": {
        "primary": "#4f46e5",
        "secondary": "#ec4899"
    },
    "spacing": {
        "small": "8px",
        "medium": "16px",
        "large": "24px"
    }
}

配置文件tailwindcss.config.js

const designTokens = require('./design-tokens.json');

module.exports = {
  theme: {
    colors: {
      primary: designTokens.color.primary,
      secondary: designTokens.color.secondary
    },
    spacing: {
      sm: designTokens.spacing.small,
      md: designTokens.spacing.medium,
      lg: designTokens.spacing.large
    }
  }
};

2. 动态样式

  • 控制单条样式
    例如用isTrue控制borderpy
const Button = ({ isTrue }) => {
    return (
        <button
            className={`
                ${isTrue ? 'border-[1px]' : 'border-2'}
                ${isTrue ? 'py-1' : 'py-3'}
            `}
        >
           label
        </button>
    )
}
  • 失效写法
    此时使用变量来控制盒子宽度和字体颜色就会失效了:
const Div = ({ width, color }) => {
    return <div className={`w-[${width}px] text-${color}`}></div>
}

以上写法暂不支持,样式会失效,是因为TailwindCSS是在构建时按需生成类名以及相应的样式,这种运行时生成的无法被检测到。

正确写法:

const Div = ({ width, color }) => {
    return <div className="..." style={{ width, color }}></div>
}

3. 公共样式的复用问题

设计初衷:不要过早抽象,相对独立维护

官方的推荐做法
重复多使用jsx+循环,也可以利用代码编辑器快速同时编辑多个className
在这里插入图片描述

总结

tailwindcss:

  1. 关注当前页面,不必关注类名
  2. 高效处理响应式和伪类
  3. 与内联style类似,各样式独立,不必担心复用问题,维护性强

tip:

常用工具类普遍好记,如grid就是 display: gird , relative就是 position: relative , 但是有一些css和tailwindcss写法出入比较大的,比如width,写法 w-[100px]
可以边写边在官方文档ctrl+k查找,基本两遍也就记住了~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot 第二课(Ⅰ) 整合springmvc(详解)

目录 一、SpringBoot对静态资源的映射规则 1. WebJars 资源访问 2. 静态资源访问 3. 欢迎页配置 二、SpringBoot整合springmvc 概述 Spring MVC组件的自动配置 中央转发器&#xff08;DispatcherServlet&#xff09; 控制器&#xff08;Controller&#xff09; 视图解…

OpenHarmony 开源鸿蒙北向开发——3.配置SDK

安装、配置完成之后我们就要配置SDK。 我们创建工程后&#xff0c;点击右上角设置 进入设置 进入OpenHarmony SDK&#xff0c;选择编辑 这里配置一下SDK安装位置 点击完成 这里我们API版本勾选第一个即可 确认安装 勾选接受 这里要等一会 安装完成后&#xff0c;点击完成

vulhub Matrix-Breakout

1.下载靶机&#xff0c;打开靶机和kali虚拟机 2.查询kali和靶机ip 3.浏览器访问 访问81端口有登陆界面 4.扫描敏感目录 kali dirb 扫描 一一访问 robot.txt提示我们继续找找&#xff0c;可能是因为我们的字典太小了&#xff0c;我们换个扫描器换个字典试下,利用kali自带的最大…

Unity3D开发AI桌面精灵/宠物系列 【二】 语音唤醒 ivw 的两种方式-Windows本地或第三方讯飞等

Unity3D 交互式AI桌面宠物开发系列【二】ivw 语音唤醒 该系列主要介绍怎么制作AI桌面宠物的流程&#xff0c;我会从项目开始创建初期到最终可以和AI宠物进行交互为止&#xff0c;项目已经开发完成&#xff0c;我会仔细梳理一下流程&#xff0c;分步讲解。 这篇文章主要讲有关于…

三月九次前端面试复盘:当场景题成为通关密钥

三月初集中面了包括字节、美团、滴滴在内的9家公司&#xff0c;经历7场技术面2场Leader面后&#xff0c;发现如今的面试逻辑已发生根本转变。这里分享真实经历与题目&#xff0c;供近期求职者参考。 一、面试形态变化&#xff1a;从理论背诵到实战推演 1. 八股文边缘化&#…

C++输入输出流第一弹:标准输入输出流 详解(带测试代码)

目录 C输入输出流 流的四种状态&#xff08;重点&#xff09; 标准输入输出流 标准输入流 逗号表达式 1. 逗号表达式的基本规则 示例 2. 图片中的代码分析 关键点解析 3. 常见误区 误区 1&#xff1a;逗号表达式等同于逻辑与 && 误区 2&#xff1a;忽略输入…

鸿蒙NEXT项目实战-百得知识库05

代码仓地址&#xff0c;大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点&#xff1a; 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

黑马node.js教程(nodejs教程)——AJAX-Day01-04.案例_地区查询——查询某个省某个城市所有地区(代码示例)

文章目录 代码示例效果 代码示例 axiosTest.html <!DOCTYPE html> <!-- 文档类型声明&#xff0c;告诉浏览器这是一个HTML5文档 --> <html lang"en"> <!-- HTML根元素&#xff0c;设置文档语言为英语 --><head> <!-- 头部区域&am…

vue 自制列表,循环滚动

需求人员表示&#xff0c;超过高度的表格内容需要滚动展示&#xff0c;所以效果图如下&#xff1a; 自定义列表样式&#xff0c;主要是通过flex布局&#xff0c;控制 类th 与 类td 的宽度保持一致&#xff0c;标签结构还是参考了table的结构&#xff0c;由thead与tbody包裹tr再…

Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传

以下内容源于日常学习的整理&#xff0c;欢迎交流。 下图是Windows主机、虚拟机Ubuntu、开发者三者之间文件互传的方式示意图&#xff1a; 注意&#xff0c;下面谈及的所有方式&#xff0c;都要求两者的IP地址处于同一网段&#xff0c;涉及到的软件资源见felm。 一、Windows主…

Windows Docker 报错: has no HTTPS proxy,换源

pull python 3.7报错&#xff1a; 尝试拉取Docker 测试库hello world也失败 尝试使用临时镜像源&#xff0c;可以成功拉取&#xff1a; sudo docker pull docker.m.daocloud.io/hello-world说明确实是网络问题&#xff0c;需要配置镜像源&#xff0c;为了方便&#xff0c;在d…

Java:Arrays类:操作数组的工具类

文章目录 Arrays类常见方法SetAll(); 代码排序如果数组中存储的是自定义对象 Arrays类 常见方法 SetAll(); 注意&#xff1a; 不能用新的数组接是因为修改的是原数组&#xff0c;所以完了要输出原数组发现会产生变化参数是数组下标变成灰色是因为还能简化&#xff08;Lambda…

只是“更轻更薄”?不!遨游三防平板还选择“更强更韧”

当消费电子领域普遍追求“更轻更薄”的设计美学时&#xff0c;遨游三防平板不止于此&#xff0c;还选择了另一条道路——“更强更韧”。在智能制造的复杂场景中&#xff0c;三防平板需直面高温、油污、撞击与极端气候的考验。普通消费级平板因防护性能不足&#xff0c;常因环境…

基于RAGFlow本地部署DeepSeek-R1大模型与知识库:从配置到应用的全流程解析

作者&#xff1a;后端小肥肠 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; DeepSpeek服务器繁忙&#xff1f;这几种替代方案帮你流畅使用&#xff01;&#xff08;附本地部署教程&#xff09;-CSDN博客 10分钟上手…

[蓝桥杯 2023 省 B] 飞机降落(不会dfs的看过来)

[蓝桥杯 2023 省 B] 飞机降落 题目描述 N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti​ 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 D i D_{i} Di​ 个单位时间&#xff0c;即它最早可以于 T i T_{i} Ti​ 时刻…

信创系统极速文件查找:locate 命令详解

原文链接&#xff1a;信创系统极速文件查找&#xff1a;locate 命令详解 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇信创终端操作系统上 locate 命令详解的文章。在 Linux 及信创终端操作系统&#xff08;如 统信 UOS、麒麟 KOS&#xff09;中&#xff0c;查找…

C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)

C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09; 文章目录 C# | 超简单CSV表格读写操作&#xff08;轻松将数据保存到CSV&#xff0c;并支持读取还原&#xff09;一、上位机开发中的CSV应用背景二、CSV读写实战教学1. 基本对…

PostgreSQL:语言基础与数据库操作

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

蓝桥杯学习——二叉树+奇点杯题目解析

基础认知 一、二叉树种类&#xff1a; 1.满二叉树。记深度k&#xff0c;节点数量2^k-1。 2.完全二叉树&#xff1a;除了底层&#xff0c;其余全满&#xff0c;底部从左到右连续。 3&#xff0c;平衡二叉搜索树&#xff1a;左子树和右子树高度差不大于1。 二、存储方式&…

基于django+vue的购物商城系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…