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

TailwindCSS【实用教程】

官网 https://tailwindcss.com/docs/installation/using-vite

Tailwind CSS 是一个实用优先的 CSS 框架

特色

  • 原子化样式类名
  • 可深度定制主题
  • 插件丰富

安装+配置+导入

vite 中

pnpm add tailwindcss @tailwindcss/vite

npm i tailwindcss @tailwindcss/vite

vite.config.ts 中配置

importtailwindcssfrom'@tailwindcss/vite'
plugins:[tailwindcss(),],

全局 css 文件中导入

@import"tailwindcss";

Nuxt.js 中

https://nuxt.com/modules/tailwindcss

npx nuxi@latest module add tailwindcss

安装 vscode 插件

Tailwind CSS IntelliSense

【重要】单位的规则

TailwindCSS 中的数字是一个索引值,其对应的单位并不是 px,计算规则如下:

实际间距 = 数字 × 0.25rem

浏览器默认字体大小是 16px(1rem=16px),则

实际px值 = 数字 × 4px

如 p-4 的含义是 padding:16px

常用样式类

定位

Tailwind 类原生 CSS说明
staticposition: static默认文档流,默认值
relativeposition: relative相对定位,不脱离文档流,以自身的文档流位置为标准偏移,原文档流位置保留,会覆盖邻近元素(相对定位的元素在上面)
absoluteposition: absolute绝对定位,脱离文档流,以最近的已定位父级元素「relative/absolute/fixed」为标准偏移,原文档流位置不保留
fixedposition: fixed固定定位,相对于浏览器视口,固定不动
stickyposition: sticky粘性定位,滚动到阈值变固定(吸顶/吸底)
  • top-*上边距
  • bottom-*下边距
  • left-*左边距
  • right-*右边距

inset 用法

inset-4 → top/right/bottom/left 全都 16px inset-x-4 → left + right inset-y-4 → top + bottom

Tailwind 默认:1单位 = 0.25rem = 4px

  • inset-0= 0px
  • inset-2= 8px
  • inset-4= 16px

层级控制 z-index

定位元素重叠时,用z-*控制层级

z-0、z-10、z-20、z-30、z-50、z-auto

实战案例【绝对定位居中】(任意元素)

<divclass="relative w-80 h-80 border"><divclass="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">任意元素完美居中</div></div>

实战案例【铺满居中】

<divclass="absolute inset-0 flex items-center justify-center">全屏居中</div>

常用速记

  1. 子绝父相:父 relative+子 absolute
  2. 盒子全覆盖:absolute inset-0
  3. 四周留白:absolute inset-4
  4. 悬浮按钮:fixed bottom-4 right-4
  5. 导航吸顶:sticky top-0 z-10
  6. 元素居中:top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2

flex 布局

  • flex:将元素设置为 flex 布局。
  • flex - [direction]:设置 flex 子项的排列方向,如flex - row(水平排列)、flex - col(垂直排列)。
  • justify - [content]:设置 flex 子项的水平对齐方式,如justify - center(水平居中)。
  • items - [align]:设置 flex 子项的垂直对齐方式,如items - center(垂直居中)。

flex-1

用于自适应撑满剩余空间

flex:1 1 0%;
  • 1(flex-grow):可以增长,占多余空间
  • 1(flex-shrink):可以缩小,适应容器空间变化
  • 0%(flex-basis):初始宽度为 0,不预留空间!

实战案例:“左边自适应 + 右边定宽”的布局

<divclass="flex"><divclass="flex-1 bg-blue-500">左边自适应</div><divclass="bg-red-500 w-40">右边定宽</div></div>

flex-none

用于保持固定宽度,不被挤压

flex:0 0 auto;
  • flex-grow: 0 → 不参与增长
  • flex-shrink: 0 → 不参与缩小
  • flex-basis: auto → 宽度由内容或 w-xx 决定

grid 布局

  • grid:将元素设置为 grid 布局。
  • grid - cols - [number]:设置网格列数,如grid - cols - 3(三列网格)。

文本

  • text - [size]:设置文本大小,如text - xl(1.25rem)。
  • text - [color]:设置文本颜色,如text - blue - 500。
  • font - [weight]:设置字体粗细,如font - bold。
  • italic:设置字体为斜体。

背景与边框

  • bg - [color]:设置背景颜色,如bg - gray - 100。
  • border - [width]:设置边框宽度,如border - 2。
  • border - [color]:设置边框颜色,如border - red - 400。

圆角

  • rounded - [size]:设置边框圆角
  • rounded-sm - 小圆角 (0.125rem)
  • rounded - 同 rounded-md
  • rounded-lg - 大圆角 (0.5rem)
  • rounded-xl - 特大圆角 (0.75rem)
  • rounded-full - 完全圆形

响应式

TailwindCSS 的策略是小屏优先

  • sm:小屏幕(宽度≥640px)。
  • md:中等屏幕(宽度≥768px)。
  • lg:大屏幕(宽度≥1024px)。
  • xl:特大屏幕(宽度≥1280px)。
<divclass="w - full sm:w - 1/2 md:w - 1/3 lg:w - 1/4 xl:w - 1/5">这个元素的宽度会根据屏幕大小变化。</div>

交互

  • hover::悬停状态。
  • focus::聚焦状态。
  • active::激活状态。
<buttonclass="bg - blue - 500 text - white p - 2 rounded hover:bg - blue - 600 focus:outline - none focus:ring - 2 focus:ring - blue - 400">悬停和聚焦有不同效果的按钮</button>

特殊工具类

peer 兄弟元素状态关联

peer本身不产生任何视觉效果,它的作用是标记一个元素,让其他兄弟元素可以通过peer-*前缀类来响应它的状态变化。

工作原理:

<!-- 第一步:用 peer 标记触发器 --><inputclassName="peer"/><!-- 第二步:用 peer-* 类响应触发器状态 --><labelclassName="peer-focus:text-blue-500">标签文字</label>

常用的peer-*状态类:

类名触发条件
peer-focus:当 peer 元素获得焦点时
peer-hover:当鼠标悬停在 peer 元素上时
peer-active:当 peer 元素被激活时(点击中)
peer-disabled:当 peer 元素被禁用时
peer-checked:当 peer 元素(如 checkbox)被选中时

实战范例

按钮

<buttonclassName="bg-blue-500 hover:bg-blue-600 text-white font-medium py-2 px-6 rounded-lg transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-50 cursor-pointer">点击按钮</button>
  • 鼠标悬停时,背景色加深,用 transition-colors 实现性能最佳的过渡效果

  • focus:outline-none

    • 移除浏览器默认的焦点轮廓
    • 避免默认轮廓与自定义焦点样式冲突
  • focus:ring-2

    • 添加 2px 宽的环形效果
    • 提供清晰的视觉焦点指示
  • focus:ring-blue-400

    • 设置环形的颜色为蓝色 400
    • 与按钮的蓝色主题保持一致
  • focus:ring-opacity-50

    • 设置环形的透明度为 50%
    • 使焦点效果更加柔和自然

商品


react 版

<divclassName="flex flex-col h-full">{/* 图片部分:固定高度,保持原始比例 */}<imgclassName="w-full h-48 object-cover flex-none"src="https://img0.baidu.com/it/u=2236720789,2725222071&fm=253&fmt=auto&app=138&f=JPEG?w=1220&h=500"alt="商品图片"/>{/* 内容区:自适应高度,占据剩余空间 */}<divclassName="flex-1 p-4"><h3className="text-lg font-bold mb-2">商品标题</h3><pclassName="text-gray-600 mb-4">商品描述...</p>{/* 底部栏:价格与按钮行水平排列 */}<divclassName="flex items-center justify-between"><spanclassName="text-2xl text-red-500">¥299</span><buttonclassName="px-4 py-2 bg-blue-600 text-white rounded">立即购买</button></div></div></div>
http://www.cnnetsun.cn/news/2127036.html

相关文章:

  • IoTDB Workbench保姆级安装指南:从JDK配置到Web界面访问(避坑修改默认密码)
  • 从YOLO到RetinaNet:目标检测工程师的算法选型实战指南(含性能对比)
  • OBS+腾讯云WebRTC插件安装避坑大全:从版本匹配到配置生效,一次搞定
  • 手把手教你用ZYNQ7035开发板实现双网口:一个PS直连,一个PL转接GMII
  • Gurobi学术版安装避坑指南:从Windows到Linux,手把手搞定Python与C++环境配置
  • 从‘补全’到‘对话’:手把手教你将旧版Completion代码迁移到ChatCompletion
  • Material Design Lite消息通知:打造无缝用户体验的终极指南
  • applied-ml智能家居:家庭环境中的AI助手终极指南
  • 基于OpenCV图像处理的钥匙纹理检测 锁匙齿纹识别
  • 别再手动抄表了!用昆仑通态触摸屏实现自动化数据导出(附完整脚本)
  • 3步解锁网易云音乐加密文件:ncmdumpGUI图形化工具使用指南
  • 2025届学术党必备的AI科研网站横评
  • 新概念英语第二册45_A clear conscience
  • 在RK3568 Android11上搞定广和通NL668 4G模块上网:从驱动移植到RIL库配置的完整避坑指南
  • 别再只把SIP OPTIONS当心跳包了!手把手教你用它排查VoIP通话问题(附Wireshark抓包分析)
  • 终极Gradio指南:如何打造真正人人可用的AI交互界面
  • 别再只会点灯了!用STM32CubeMX+Keil5快速驱动3x3矩阵键盘(附完整代码)
  • 如何实现XState实时协作:多用户状态同步完整指南
  • RTOS实时性失效的致命盲区:2026版C语言规范强制要求的3层栈保护机制详解
  • OpenKM企业级文档管理系统:一体化解决方案破解企业信息管理挑战
  • 如何快速学习编译器原理:The Super Tiny Compiler的完整指南
  • 3分钟快速定位GPT-Pilot模板错误:从语法检查到日志追踪完整指南
  • STM32 VSCode 开发-与Keil MDK协同开发环境搭建
  • FFXIV ACT 副本动画跳过插件:5步轻松实现游戏效率翻倍
  • ESP8266音频项目避坑大全:从SPIFFS上传失败到库冲突的完整解决流程
  • 告别PACS系统!用C#和fo-dicom写个DICOM文件批量脱敏小工具(附源码)
  • Unlock Music Electron终极指南:如何快速解锁加密音乐文件
  • SAP数据持久化小技巧:利用INDX表玩转EXPORT DATABASE,配置缓存、用户偏好都能存
  • 人工智能核心技术解析:从机器学习到深度学习应用
  • 5个技巧让Nushell成为云原生时代的瑞士军刀:终极命令行体验指南