当前位置: 首页 > article >正文

Tailwind CSS 指令与函数

Tailwind CSS 指令与函数学习笔记一、总览Tailwind CSS 的指令与函数分为两大类类别作用域用途指令DirectivesCSS 文件中控制 Tailwind 的编译行为函数FunctionsCSS 文件 / 配置文件中动态引用主题值二、指令Directives2.1tailwind— 注入 Tailwind 各层样式/* 必须的三行通常放在主 CSS 文件顶部 */tailwindbase;/* 注入 Preflight 重置 base 层样式 */tailwindcomponents;/* 注入 components 层样式 */tailwindutilities;/* 注入 utilities 层样式 */各层内容说明指令注入内容CSS 优先级tailwind basePreflightCSS Resetlayer base中的样式最低tailwind componentslayer components中的样式 插件注册的组件中tailwind utilities所有工具类 layer utilities中的样式最高Tailwind v4 变化v4 使用import tailwindcss一行替代三行tailwind。/* Tailwind v4 */importtailwindcss;2.2layer— 声明样式所属层级/* 将自定义样式归入 Tailwind 的层级体系 */layerbase{html{-webkit-font-smoothing:antialiased;}:root{--color-primary:#2563eb;}}layercomponents{.btn{applyinline-flex items-center justify-center rounded-md px-4 py-2;}}layerutilities{.text-balance{text-wrap:balance;}}层级优先级规则layer base layer components layer utilities 无 layer 的样式 最低 中 高 最高关键要点同一层级内后定义的规则覆盖先定义的不在layer中的样式优先级最高可覆盖所有层级一个layer可以出现多次同名的层会自动合并/* 分散定义自动合并到同一层 */layercomponents{.btn{/* ... */}}layercomponents{.card{/* ... */}}/* 等价于在一个 layer components 中定义 .btn 和 .card */2.3apply— 在 CSS 中使用工具类将 Tailwind 工具类内联到自定义 CSS 规则中layercomponents{.btn-primary{applybg-blue-600 text-white rounded-md px-4 py-2 font-medium transition-colorshover:bg-blue-700focus-visible:ring-2focus-visible:ring-blue-500focus-visible:ring-offset-2disabled:opacity-50;}}apply支持的特性/* 支持变体修饰符 */.card{applyrounded-lg bg-white shadow-sm;applyhover:shadow-md;/* 伪类变体 */applyfocus-visible:ring-2;/* 焦点变体 */applydark:bg-gray-800;/* 暗色模式 */applysm:text-baselg:text-lg;/* 响应式 */applygroup-hover:scale-105;/* 群组变体 */}/* 支持重要修饰符 */.important-style{apply!text-red-500 !font-bold;}apply不支持的场景/* ❌ 不能使用需要 DOM 上下文的变体 */.btn{applypeer-disabled:opacity-50;/* peer 需要兄弟元素 */}/* ❌ 不能使用任意值中的模板语法 */.btn{applytext-[var(--my-color)];/* 某些复杂任意值可能不工作 */}/* ❌ 不能 apply 自身循环引用 */.circular{applycircular;/* 无限循环 */}2.4variants/responsive/screen已废弃Tailwind v3 中这些指令已被变体修饰符取代仅作了解。/* ❌ 旧写法v2 及之前 */responsive{.card{padding:1rem;}}variantshover,focus{.btn{opacity:0.8;}}screenmd{.container{max-width:768px;}}/* ✅ 新写法v3— 直接用变体前缀 */layercomponents{.card{applyp-4md:p-6;}.btn{applyhover:opacity-80focus:opacity-80;}}2.5source— 控制内容扫描范围v4/* Tailwind v4 新增指定额外的扫描路径 */source../node_modules/my-ui-lib/**/*.js;/* 排除路径 */source not../node_modules/some-lib/**/*.js;2.6theme— 内联定义主题v4/* Tailwind v4 新增直接在 CSS 中定义主题 */theme{--color-brand:#3b82f6;--font-display:Cal Sans,sans-serif;--breakpoint-xs:475px;}三、函数Functions3.1theme()— 引用主题配置值在 CSS 中动态获取tailwind.config.js中定义的主题值/* 基本用法获取单层值 */.card{border-radius:theme(borderRadius.lg);/* 0.5rem */padding:theme(spacing.6);/* 1.5rem */color:theme(colors.gray.900);/* #111827 */font-size:theme(fontSize.xl);/* 1.25rem */box-shadow:theme(boxShadow.md);/* 0 4px 6px -1px ... */}/* 获取带行高的字体大小返回完整对象值 */h1{font-size:theme(fontSize.2xl);/* 1.5rem */line-height:theme(lineHeight.2xl);/* 2rem *//* 注意fontSize 的 theme() 只返回字号值不含行高 */}在apply中不能使用theme()/* ❌ 错误 */.btn{applytheme(colors.blue.500);/* apply 只接受类名 */}/* ✅ 正确 — 用原生 CSS 属性 */.btn{background-color:theme(colors.blue.500);}theme()支持点号路径/* 对应配置结构 */div{/* theme.extend.colors.brand.500 */color:theme(colors.brand.500);/* theme.extend.spacing.128 */width:theme(spacing.128);/* 嵌套路径用 . 连接 */border-color:theme(colors.gray.200);}theme()带默认值/* 如果路径不存在不会报错返回空 *//* Tailwind 本身不直接支持 theme() 默认值语法 *//* 但可以用 CSS 自定义属性做 fallback */.card{/* 利用 CSS var 的 fallback */--my-radius:theme(borderRadius.xl);border-radius:var(--my-radius,0.5rem);}3.2theme()在配置文件中的使用在tailwind.config.js中通过函数参数访问主题值module.exports{theme:{extend:{// 在 extend 中无法直接引用自身需要用函数形式boxShadow:{brand:(theme)0 0 20px${theme(colors.brand.500)}40,},},},// 插件中通过参数获取 theme 函数plugins:[plugin(function({addUtilities,theme}){addUtilities({.text-gradient-brand:{backgroundImage:linear-gradient(to right,${theme(colors.brand.500)},${theme(colors.purple.500)}),WebkitBackgroundClip:text,WebkitTextFillColor:transparent,},});}),],};3.3screen()— 响应式断点函数v4/* Tailwind v4 新增在 CSS 中使用断点 */mediascreen(md){.container{max-width:768px;}}/* 等价于 */media(min-width:768px){.container{max-width:768px;}}四、指令与函数的完整速查指令速查指令版本用途示例tailwindv2注入各层样式tailwind utilitieslayerv2声明样式层级layer components { }applyv2CSS 中引用工具类apply bg-white p-4variantsv2v3 废弃包裹变体样式variants hover { }responsivev2v3 废弃包裹响应式样式responsive { }screenv2v3 废弃媒体查询快捷方式screen md { }sourcev4控制扫描范围source ../lib/**/*.jsthemev4CSS 内定义主题theme { --color-*: ... }import tailwindcssv4替代三行 tailwind一行引入全部函数速查函数用途使用位置示例theme()引用主题值CSS 规则中color: theme(colors.blue.500)theme参数引用主题值配置文件插件中theme(spacing.4)screen()响应式断点CSS media 中v4media screen(md) { }五、实战组合示例5.1 完整 CSS 入口文件/* 1. 引入 Tailwind */tailwindbase;tailwindcomponents;tailwindutilities;/* 2. Base 层全局基础 */layerbase{html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;}:root{--color-bg:theme(colors.white);--color-text:theme(colors.gray.900);--color-brand:theme(colors.blue.600);--header-h:theme(spacing.16);}.dark{--color-bg:theme(colors.gray.900);--color-text:theme(colors.gray.100);--color-brand:theme(colors.blue.400);}body{background-color:var(--color-bg);color:var(--color-text);}}/* 3. Components 层组件样式 */layercomponents{.btn{applyinline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors duration-150focus-visible:outline-nonefocus-visible:ring-2disabled:pointer-events-nonedisabled:opacity-50;}.btn-primary{applybtn bg-blue-600 text-whitehover:bg-blue-700focus-visible:ring-blue-500;}.btn-ghost{applybtn bg-transparent text-gray-700hover:bg-gray-100focus-visible:ring-gray-500dark:text-gray-300dark:hover:bg-gray-800;}.card{border-radius:theme(borderRadius.xl);background-color:theme(colors.white);box-shadow:theme(boxShadow.sm);border:1px solidtheme(colors.gray.200);padding:theme(spacing.6);}.dark .card{background-color:theme(colors.gray.800);border-color:theme(colors.gray.700);}}/* 4. Utilities 层自定义工具类 */layerutilities{.text-balance{text-wrap:balance;}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;::-webkit-scrollbar{display:none;}}.mask-fade-bottom{mask-image:linear-gradient(to bottom,black 60%,transparent 100%);}}5.2 配合配置文件// tailwind.config.jsconstpluginrequire(tailwindcss/plugin);module.exports{content:[./src/**/*.{html,js,jsx,ts,tsx,vue}],theme:{extend:{colors:{brand:{50:#eff6ff,500:#3b82f6,600:#2563eb,700:#1d4ed8,},},keyframes:{shimmer:{100%:{transform:translateX(100%)},},},animation:{shimmer:shimmer 2s infinite,},},},plugins:[plugin(function({addUtilities,theme}){// 使用 theme() 函数引用配置值addUtilities({.glow-brand:{boxShadow:0 0 20px${theme(colors.brand.500)}50,},.gradient-brand:{backgroundImage:linear-gradient(135deg,${theme(colors.brand.500)},${theme(colors.purple.500)}),},});}),],};六、常见问题与陷阱问题原因解决方案apply的类不生效类名不在content扫描范围内确保 HTML/组件文件在content配置中theme()返回空值路径写错或值未定义检查路径colors.brand.500而非brand.500layer中样式被覆盖层级优先级base components utilities将覆盖样式放到更高层级apply中使用!important语法特殊用!前缀apply !text-red-500apply循环引用类引用自身拆分为更小的类或改用原生 CSSv3 中screen不工作v3 已废弃screen改用media (min-width: theme(screens.md))theme()在apply中不可用apply只接受类名改用原生 CSS 属性 theme()七、v3 → v4 迁移对照v3 写法v4 写法tailwind base;tailwind components;tailwind utilities;import tailwindcss;tailwind.config.js中定义主题theme { }在 CSS 中定义content: [...]在配置文件中source在 CSS 中指定media (min-width: 768px)media screen(md)theme(colors.blue.500)var(--color-blue-500)v4 自动生成 CSS 变量v4 的核心变化配置从 JS 迁移到 CSS主题值自动暴露为 CSS 变量减少了对theme()函数的依赖。

相关文章:

Tailwind CSS 指令与函数

Tailwind CSS 指令与函数学习笔记 一、总览 Tailwind CSS 的指令与函数分为两大类:类别作用域用途指令(Directives)CSS 文件中控制 Tailwind 的编译行为函数(Functions)CSS 文件 / 配置文件中动态引用主题值 二、指令&…...

Tailwind CSS 自定义样式

Tailwind CSS 自定义样式学习笔记 一、自定义样式的层次结构 ┌──────────────────────────────────────────────────────┐ │ tailwind.config.js → 设计系统 Token(颜色/间距/字号) │ │…...

基于Mastra框架构建生产级AI应用:从Agent与Workflow设计到实战部署

1. 从零到一:为什么选择 Mastra 来构建你的 AI 应用?如果你正在用 TypeScript 栈开发 AI 应用,并且已经尝试过直接调用 OpenAI 的 API 或者用 LangChain 搭过一些原型,那你大概率会遇到几个绕不开的痛点:模型切换成本高…...

M2FP人体解析零基础教程:5分钟搭建WebUI服务,一键识别身体部位

M2FP人体解析零基础教程:5分钟搭建WebUI服务,一键识别身体部位 1. 什么是M2FP人体解析? M2FP(Mask2Former-Parsing)是一种先进的计算机视觉模型,专门用于识别图片中人物的各个身体部位。想象一下&#xf…...

Phi-3.5-mini-instruct部署避坑指南:vLLM加载失败排查、Chainlit连接超时解决方案

Phi-3.5-mini-instruct部署避坑指南:vLLM加载失败排查、Chainlit连接超时解决方案 1. 模型简介 Phi-3.5-mini-instruct是Phi-3模型家族中的轻量级成员,作为一款先进的开放模型,它具备以下核心特点: 128K超长上下文:…...

开源无代码数据库Baserow:自托管部署与CRM应用实战

1. 项目概述:为什么我们需要一个开源的“Airtable”? 如果你曾经为团队寻找过一款既能像电子表格一样直观操作,又能像数据库一样结构化存储数据的工具,那么Airtable这个名字大概率会出现在你的搜索结果里。它确实很棒,…...

Weka机器学习工具入门与实战指南

1. Weka机器学习工具入门指南Weka作为一款开源的机器学习工具集,自1997年由怀卡托大学开发以来,已成为学术界和工业界广泛使用的数据挖掘平台。它集成了数据预处理、分类、回归、聚类、关联规则挖掘和可视化等完整功能链,特别适合没有编程基础…...

Vivado仿真器底层工具链揭秘:xvlog、xelab、xsim到底在干什么?

Vivado仿真器底层工具链揭秘:xvlog、xelab、xsim到底在干什么? 当你在Vivado中点击"Run Simulation"按钮时,背后实际上启动了一个精密的工具链流水线。这个看似简单的操作背后,隐藏着三个关键角色:xvlog、xe…...

【深入解析LoRA】从低秩自适应到高效微调:原理、实践与调优指南

1. 为什么LoRA能成为大模型微调的首选方案 第一次接触LoRA是在去年部署一个客服对话系统时遇到的。当时客户扔过来一个175B参数的GPT-3模型,要求我们在两周内完成业务场景适配。看着服务器上那几块可怜的A100显卡,团队里所有人都觉得这是个不可能完成的任…...

从零开始打造AI画图大师:条件扩散模型完整实现与无分类器指引详解

你有没有想过,AI是如何听懂你的指令,画出你想要的东西的?当你对Midjourney输入“一只穿着宇航服的柴犬”,它真的能生成那张图——这背后究竟发生了什么?今天,我将带你亲手实现一个基础的文本控制AI绘图系统…...

机器学习数据预处理:数据标准化(Z-Score)

机器学习数据预处理:数据标准化(Z-Score)超通俗全解 数据标准化是**把所有特征统一变成“均值为0,标准差为1”**的最经典预处理方法,彻底解决量纲不一致、数值差距大的问题,所有对尺度敏感的模型都必须做。…...

【限时技术解禁】:VSCode 2026 Dev Tunnels直连容器的私有化部署方案(绕过GitHub Auth,企业级离线可用)

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026 Dev Tunnels直连容器的技术演进与企业适配价值 VSCode 2026 引入的 Dev Tunnels 原生直连容器能力,标志着远程开发范式从 SSH 代理与端口转发迈向零配置、身份感知、双向加密隧…...

本地GPU预训练Llama模型全流程与优化策略

1. 本地GPU预训练Llama模型全流程解析在自然语言处理领域,Transformer架构已成为大语言模型的事实标准。作为其中的佼佼者,Llama系列模型因其出色的性能和开源特性备受关注。本文将手把手教你如何在本地GPU上完成Llama模型的预训练全流程。1.1 为什么选择…...

深度学习模型集成方法:Bagging实战与优化

1. 深度学习模型集成方法概述在机器学习领域,集成学习(Ensemble Learning)是一种通过组合多个模型的预测结果来提升整体性能的技术。这种方法的核心思想是"三个臭皮匠顶个诸葛亮"——多个模型的集体智慧往往比单个模型表现更好。特别是在深度学习领域&…...

GeniA:大语言模型驱动的生物信息学智能体框架实战指南

1. 项目概述:当AI遇上基因,GeniA如何重塑生物信息学工作流如果你是一名生物信息学研究员、计算生物学家,或者任何需要与高通量测序数据打交道的从业者,那么你一定对“数据洪流”这个词深有体会。从二代测序到三代测序,…...

Transformer位置编码原理与实战技巧详解

1. 位置编码的本质与必要性在传统RNN结构中,序列数据是逐个元素处理的,这种顺序处理方式天然包含了位置信息。但Transformer模型采用并行处理的注意力机制,需要显式地注入位置信息才能理解序列中元素的相对或绝对位置。这就是位置编码&#x…...

神经网络反向传播算法实现与优化指南

1. 神经网络与反向传播算法基础神经网络是机器学习中最强大的工具之一,而反向传播算法则是训练神经网络的核心技术。让我们从一个开发者的角度来理解这个看似复杂的概念。想象你正在教一个孩子识别动物。最初孩子会犯很多错误,但每次错误后你会指出哪里错…...

流体天线阵列与空中计算技术的联合优化实践

1. 流体天线阵列与空中计算技术解析在物联网设备数量爆炸式增长的今天,传统"先通信后计算"的模式正面临严峻挑战。想象一下,当数千个传感器同时向云端发送数据时,不仅会挤占宝贵的无线频谱资源,还会产生难以忍受的通信延…...

3步解密网页视频下载:VideoDownloadHelper智能解析实战指南

3步解密网页视频下载:VideoDownloadHelper智能解析实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾遇到过这样的…...

NovelClaw:基于动态记忆与可观测架构的AI长篇叙事工作台

1. 项目概述:从“一次性生成”到“可检视的写作工作台”如果你尝试过用大语言模型(LLM)来创作长篇小说,大概率会遇到这样的困境:你给了一个精彩的开头设定,模型也洋洋洒洒生成了几千字。但当你想要继续写第…...

量子计算基础:Hadamard门与CNOT门的原理与应用

1. 量子门基础与物理意义在量子计算中,Hadamard门和CNOT门如同经典计算机中的与、或、非门一样,构成了量子电路的基础构建模块。但与经典比特不同,量子比特(qubit)可以同时处于|0⟩和|1⟩的叠加态,这种特性…...

MPS:用Go语言打造轻量级媒体服务器,让旧安卓设备变身家庭流媒体中心

1. 项目概述:一个为移动设备量身定制的媒体播放服务器如果你和我一样,手头有几台旧手机、平板电脑,或者干脆就是一台性能不那么强劲的安卓电视盒子,想把它们变成家庭媒体中心,那你大概率遇到过和我一样的困境。主流的媒…...

Qwen3-14B开源大模型实战:构建垂直领域微调数据集生成Pipeline

Qwen3-14B开源大模型实战:构建垂直领域微调数据集生成Pipeline 1. 开篇:为什么需要垂直领域数据集 在人工智能领域,通用大模型虽然表现优异,但在特定垂直场景下往往存在"知识盲区"。就像一位博学的教授,虽…...

AI智能体服务化实战:从单体Agent到生产级工具箱架构解析

1. 项目概述:一个为AI智能体服务的工具箱最近在折腾AI智能体(Agent)相关的项目,发现一个挺有意思的现象:很多开发者,包括我自己在内,在初期都会陷入一个“重复造轮子”的困境。每次启动一个新Ag…...

别再重装VSCode了!2026内存优化终极 checklist:12项配置项+8个进程级kill命令+1个自研memory-guard插件

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026内存优化的底层动因与诊断范式 VSCode 2026 版本将内存管理从“被动回收”转向“预测性约束”,其核心动因源于 Electron 28 对 V8 堆快照的细粒度控制能力,以及语言服…...

【VSCode 2026权限控制黄金标准】:为什么头部科技公司已禁用“共享工作区默认读写”?4类角色权限矩阵表免费领取

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026实时协作权限控制全景概览 VSCode 2026 引入了基于角色的细粒度实时协作权限模型(RBAC-RTC),在多人协同编辑同一工作区时,支持文件级、行级乃…...

机器人锂电池完整方案(选型 + 设计 + 厂家推荐)【浩博电池】

机器人锂电池完整方案(选型 设计 厂家推荐)机器人锂电池是机器人系统的核心动力单元,直接影响设备的续航能力、运动性能、安全性与稳定性。不同类型机器人(AGV、巡检机器人、四足机器人、服务机器人、消防机器人等)对…...

GPU显存碎片化暴雷预警!:CUDA 13 Unified Memory + CUDA Graph组合使用导致OOM的4种隐蔽路径与内存池动态调优脚本

更多请点击: https://intelliparadigm.com 第一章:GPU显存碎片化暴雷预警!:CUDA 13 Unified Memory CUDA Graph组合使用导致OOM的4种隐蔽路径与内存池动态调优脚本 CUDA 13 引入的 Unified Memory(UM)自动…...

nanobot效果惊艳:Qwen3-4B-Instruct准确识别并执行Linux系统命令真实截图

nanobot效果惊艳:Qwen3-4B-Instruct准确识别并执行Linux系统命令真实截图 1. nanobot:超轻量级个人AI助手 nanobot是一款受OpenClaw启发的超轻量级个人人工智能助手,仅需约4000行代码就能提供核心代理功能。相比其他类似工具动辄数十万行的…...

Kaggle竞赛入门:4步提升机器学习实战能力

1. 从零开始玩转Kaggle竞赛的实战指南作为一名在数据科学领域摸爬滚打多年的从业者,我清楚地记得第一次接触Kaggle时那种既兴奋又迷茫的感觉。Kaggle作为全球最大的数据科学竞赛平台,汇聚了来自世界各地的机器学习高手,在这里你可以找到最前沿…...