Tailwind间距系统

学习掌握Tailwind CSS强大而灵活的间距控制系统,从padding到margin到space-between

目录

Padding (内边距)

  • 基础用法与方向控制
  • 响应式内边距
  • 常见使用场景

Margin (外边距)

  • 基础用法与方向控制
  • 负值外边距
  • auto外边距居中

Space Between

  • 子元素间距控制
  • 水平与垂直间距
  • 实用布局技巧

Padding (内边距)

控制元素内容与其边界之间的空间

基础内边距

Tailwind 提供 p-{size}类来设置元素的内边距,其中size代表间距的大小。

p-2 (0.5rem / 8px)

内容区域
<div class="p-2">
  内容区域
</div>

p-4 (1rem / 16px)

内容区域
<div class="p-4">
  内容区域
</div>

p-8 (2rem / 32px)

内容区域
<div class="p-8">
  内容区域
</div>
间距比例说明

Tailwind的默认间距比例为: 1 = 0.25rem (4px), 2 = 0.5rem (8px), 4 = 1rem (16px), 6 = 1.5rem (24px), 8 = 2rem (32px), 等等。

方向性内边距

可以使用方向性前缀来控制特定方向的内边距: px-{size} (水平),py-{size} (垂直),pt/pr/pb/pl-{size} (上/右/下/左)

水平内边距 (px-4)

左右各添加1rem内边距
<div class="px-4">
  左右各添加1rem内边距
</div>

垂直内边距 (py-4)

上下各添加1rem内边距
<div class="py-4">
  上下各添加1rem内边距
</div>

顶部内边距 (pt-4)

顶部1rem内边距

右侧内边距 (pr-4)

右侧1rem内边距

底部内边距 (pb-4)

底部1rem内边距

左侧内边距 (pl-4)

左侧1rem内边距

响应式内边距

结合Tailwind的响应式前缀(sm:, md:, lg:, xl:)可以在不同屏幕尺寸应用不同的内边距

默认: p-2 (0.5rem)

sm: p-4 (1rem)

md: p-6 (1.5rem)

lg: p-8 (2rem)

<div class="p-2 sm:p-4 md:p-6 lg:p-8">
  响应式内边距示例
</div>
响应式断点
  • sm: 640px及以上
  • md: 768px及以上
  • lg: 1024px及以上
  • xl: 1280px及以上
  • 2xl: 1536px及以上

Margin (外边距)

控制元素周围的空间,影响元素与其他元素的间距

基础外边距

Tailwind 提供 m-{size}类来设置元素的外边距,其中size代表间距的大小。

m-2 (0.5rem / 8px)

元素内容
<div class="m-2">
  元素内容
</div>

m-4 (1rem / 16px)

元素内容
<div class="m-4">
  元素内容
</div>

m-8 (2rem / 32px)

元素内容
<div class="m-8">
  元素内容
</div>

方向性外边距

类似内边距,可以使用方向性前缀控制特定方向的外边距: mx-{size} (水平),my-{size} (垂直),mt/mr/mb/ml-{size} (上/右/下/左)

水平外边距 (mx-4)

左右各添加1rem外边距
<div class="mx-4">
  左右各添加1rem外边距
</div>

垂直外边距 (my-4)

上下各添加1rem外边距
<div class="my-4">
  上下各添加1rem外边距
</div>

负值外边距

Tailwind支持负值外边距,通过添加减号前缀 -m-{size} 来应用

普通布局

元素1
元素2

使用负边距 (-mt-4)

元素1
元素2
<div>
  <div>元素1</div>
</div>
<div class="-mt-4">
  <div>元素2</div>
</div>

自动外边距 (mx-auto)

使用 mx-auto 可以实现水平居中布局

默认左对齐

宽度50%
<div class="w-1/2">
  宽度50%
</div>

mx-auto 水平居中

宽度50%
<div class="w-1/2 mx-auto">
  宽度50%
</div>
实用技巧
  • 使用mx-auto + max-w-{size}创建居中容器
  • 使用ml-auto使元素右对齐
  • 使用mt-auto使元素底部对齐

Space Between

控制容器内子元素之间的间距,简化布局

Space Between 概述

Tailwind 提供 space-x-{size} space-y-{size}类来设置子元素之间的间距,而不需要给每个子元素单独设置margin。

工作原理

space-x-* space-y-* 通过给子元素设置 margin 来实现间距, 但会自动跳过第一个元素。这比手动给每个元素设置 margin 更加简洁。

水平子元素间距 (space-x-*)

使用 space-x-{size}给水平排列的子元素添加间距

space-x-4 间距示例

元素1
元素2
元素3
元素4
<div class="flex space-x-4">
  <div>元素1</div>
  <div>元素2</div>
  <div>元素3</div>
  <div>元素4</div>
</div>

不同水平间距对比

space-x-2 (0.5rem)

space-x-4 (1rem)

space-x-8 (2rem)

垂直子元素间距 (space-y-*)

使用 space-y-{size}给垂直排列的子元素添加间距

space-y-4 间距示例

元素1
元素2
元素3
元素4
<div class="space-y-4">
  <div>元素1</div>
  <div>元素2</div>
  <div>元素3</div>
  <div>元素4</div>
</div>

不同垂直间距对比

space-y-2

space-y-4

space-y-8

反向间距 (space-x-reverse/space-y-reverse)

当元素顺序反向时,可以使用 space-x-reverse space-y-reverse 类来适配布局

正常方向

1
2
3
<div class="flex space-x-4">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

反向布局 (flex-row-reverse + space-x-reverse)

1
2
3
<div class="flex flex-row-reverse space-x-4 space-x-reverse">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>
使用技巧
  • space-between 极大简化了按钮组、导航项、列表等常见UI组件的布局
  • 组合 space-x/y 与 flex 或 grid 创建更复杂的布局
  • 当使用 flex-row-reverse 时,记得添加 space-x-reverse 以保持正确的间距

实践案例

以下是Tailwind CSS间距系统在实际UI组件中的典型应用,展示了如何合理使用padding、margin和space-between来创建精美的界面设计。

1. 卡片组件

Laptop

MacBook Pro

最新款MacBook Pro采用M2 Pro芯片,提供卓越性能和超长电池续航。

¥12,999

关键间距设置:

  • 使用p-6为卡片内容区设置内边距
  • 使用mb-2mb-4控制文本之间的垂直间距
  • 使用px-4 py-2设置按钮的内部间距
  • 使用justify-between控制价格和按钮间的水平间距

2. 登录表单

账户登录

忘记密码?
还没有账户? 立即注册

关键间距设置:

  • 使用p-8为整个表单设置宽松的内边距
  • 使用space-y-4控制表单项之间的间距
  • 使用mb-2mt-1控制标签和输入框的关系
  • 使用px-3 py-2设置输入框内部填充
  • 使用mt-6为底部注册链接设置顶部边距

3. 仪表盘布局

应用仪表盘

概览
总用户
12,349
↑ 12.3%
总收入
¥89,245
↑ 8.1%
订单
1,432
↑ 5.7%
转化率
3.6%
↓ 1.8%
最近订单
订单ID客户金额状态
#45678
张三
¥1,200
已完成
#45679
李四
¥2,450
处理中

关键间距设置:

  • 导航栏使用px-6 py-4设置间距平衡
  • 侧边栏菜单使用space-y-1紧凑排列菜单项
  • 数据卡片使用p-4内边距和gap-4间隔
  • 表格中使用px-6 py-3px-6 py-4区分表头和内容
  • 状态标签使用px-2的紧凑水平内边距

实践技巧总结

1. 布局层次

使用不同大小的内外边距创建视觉层次感,如卡片内部使用 p-6,而卡片间的间距使用 gap-4。

2. 响应式调整

在不同屏幕尺寸下调整间距大小,例如 p-4 md:p-6 lg:p-8,在小屏幕上使用更紧凑的间距。

3. 使用简化工具

尽可能使用 space-x/y 代替手动设置每个元素的 margin,特别是在列表、导航栏等重复元素中。

4. 一致性

在整个应用中保持一致的间距比例,例如始终使用 4、8、16、24、32px 等基于4倍数的数值。

总结

Tailwind的间距系统是构建精美UI的基础,合理运用这些工具可以创建出结构清晰、层次分明的界面。

间距设计技巧
  • 遵循一致的间距比例,保持UI的节奏感
  • 使用响应式前缀,确保在各种屏幕尺寸下的最佳展示
  • 组合使用padding、margin和space-between来简化布局
  • 适当使用负边距(负margin)创建视觉重叠效果