跳到主要内容

边框与分割线

边框是区分元素、创建视觉层次的重要工具。Tailwind CSS 提供了完整的边框工具类,包括边框宽度、样式、颜色、圆角以及分割线等。本章将详细介绍如何使用这些工具类。

边框宽度

基本用法

使用 borderborder-{width} 设置边框宽度:

<div class="border border-indigo-600 p-4">1px 边框</div>
<div class="border-2 border-indigo-600 p-4">2px 边框</div>
<div class="border-4 border-indigo-600 p-4">4px 边框</div>
<div class="border-8 border-indigo-600 p-4">8px 边框</div>

可用的宽度值:

类名宽度
border1px
border-00px
border-22px
border-44px
border-88px

单边边框

使用 border-{side}-{width} 设置单边边框:

<div class="border-t-4 border-indigo-500 p-4">顶部边框</div>
<div class="border-r-4 border-indigo-500 p-4">右侧边框</div>
<div class="border-b-4 border-indigo-500 p-4">底部边框</div>
<div class="border-l-4 border-indigo-500 p-4">左侧边框</div>

方向修饰符:

修饰符方向
ttop(上)
rright(右)
bbottom(下)
lleft(左)

水平和垂直边框

<div class="border-x-4 border-indigo-500 p-4">左右边框</div>
<div class="border-y-4 border-indigo-500 p-4">上下边框</div>

逻辑属性

支持 RTL(从右到左)语言的逻辑属性:

<div class="border-s-4 border-indigo-500 p-4">起点边框(LTR 时等于左)</div>
<div class="border-e-4 border-indigo-500 p-4">终点边框(LTR 时等于右)</div>

边框样式

Tailwind 提供多种边框样式:

<div class="border-2 border-solid border-gray-900 p-4">实线边框</div>
<div class="border-2 border-dashed border-gray-900 p-4">虚线边框</div>
<div class="border-2 border-dotted border-gray-900 p-4">点线边框</div>
<div class="border-2 border-double border-gray-900 p-4">双线边框</div>
<div class="border-2 border-hidden border-gray-900 p-4">隐藏边框</div>
<div class="border-2 border-none border-gray-900 p-4">无边框</div>

边框颜色

基本用法

<div class="border-2 border-black p-4">黑色边框</div>
<div class="border-2 border-gray-500 p-4">灰色边框</div>
<div class="border-2 border-blue-500 p-4">蓝色边框</div>
<div class="border-2 border-red-500 p-4">红色边框</div>

边框透明度

<div class="border-2 border-blue-500/50 p-4">50% 透明度边框</div>
<div class="border-2 border-blue-500/75 p-4">75% 透明度边框</div>

单边颜色

<div class="border-4 border-t-blue-500 border-r-green-500 border-b-yellow-500 border-l-red-500 p-4">
各边不同颜色的边框
</div>

任意颜色值

<div class="border-2 border-[#1da1f2] p-4">自定义颜色边框</div>

圆角

圆角用于软化元素的边角,创造更友好的视觉效果。

基本用法

<div class="rounded-none bg-blue-500 p-4">无圆角</div>
<div class="rounded-sm bg-blue-500 p-4">小圆角</div>
<div class="rounded bg-blue-500 p-4">默认圆角</div>
<div class="rounded-md bg-blue-500 p-4">中等圆角</div>
<div class="rounded-lg bg-blue-500 p-4">大圆角</div>
<div class="rounded-xl bg-blue-500 p-4">超大圆角</div>
<div class="rounded-2xl bg-blue-500 p-4">更大圆角</div>
<div class="rounded-3xl bg-blue-500 p-4">特大圆角</div>
<div class="rounded-full bg-blue-500 p-4">完全圆形</div>

圆角大小对照:

类名圆角半径
rounded-none0
rounded-sm0.125rem (2px)
rounded0.25rem (4px)
rounded-md0.375rem (6px)
rounded-lg0.5rem (8px)
rounded-xl0.75rem (12px)
rounded-2xl1rem (16px)
rounded-3xl1.5rem (24px)
rounded-full9999px

单边圆角

<div class="rounded-t-lg bg-blue-500 p-4">顶部圆角</div>
<div class="rounded-r-lg bg-blue-500 p-4">右侧圆角</div>
<div class="rounded-b-lg bg-blue-500 p-4">底部圆角</div>
<div class="rounded-l-lg bg-blue-500 p-4">左侧圆角</div>

单角圆角

<div class="rounded-tl-lg bg-blue-500 p-4">左上圆角</div>
<div class="rounded-tr-lg bg-blue-500 p-4">右上圆角</div>
<div class="rounded-bl-lg bg-blue-500 p-4">左下圆角</div>
<div class="rounded-br-lg bg-blue-500 p-4">右下圆角</div>

任意圆角值

<div class="rounded-[2rem] bg-blue-500 p-4">自定义圆角值</div>

分割线

分割线用于在相邻元素之间添加边框,是创建列表、导航等布局的利器。

水平分割线

使用 divide-y 在子元素之间添加水平分割线:

<div class="divide-y divide-gray-200">
<div class="p-4">项目 1</div>
<div class="p-4">项目 2</div>
<div class="p-4">项目 3</div>
</div>

垂直分割线

使用 divide-x 在子元素之间添加垂直分割线:

<div class="flex divide-x divide-gray-200">
<div class="px-4">项目 1</div>
<div class="px-4">项目 2</div>
<div class="px-4">项目 3</div>
</div>

分割线宽度

<div class="divide-y divide-y-2 divide-gray-200">
<div class="p-4">项目 1</div>
<div class="p-4">项目 2</div>
</div>

<div class="flex divide-x divide-x-4 divide-gray-200">
<div class="px-4">项目 1</div>
<div class="px-4">项目 2</div>
</div>

分割线样式

<div class="divide-y divide-dashed divide-gray-200">
<div class="p-4">虚线分割</div>
<div class="p-4">虚线分割</div>
</div>

<div class="divide-y divide-dotted divide-gray-200">
<div class="p-4">点线分割</div>
<div class="p-4">点线分割</div>
</div>

分割线颜色

<div class="divide-y divide-blue-500">
<div class="p-4">蓝色分割线</div>
<div class="p-4">蓝色分割线</div>
</div>

<div class="divide-y divide-gray-200 dark:divide-gray-700">
<div class="p-4">支持暗黑模式</div>
<div class="p-4">支持暗黑模式</div>
</div>

反向分割

当使用 flex-row-reverseflex-col-reverse 时,使用 divide-x-reversedivide-y-reverse 确保分割线正确显示:

<div class="flex flex-row-reverse divide-x divide-x-reverse divide-gray-200">
<div class="px-4">项目 1</div>
<div class="px-4">项目 2</div>
<div class="px-4">项目 3</div>
</div>

环(ring)是一种类似边框的效果,但不会影响布局,常用于焦点状态。

基本用法

<button class="ring ring-blue-500 px-4 py-2 rounded">蓝色环</button>
<button class="ring-2 ring-blue-500 px-4 py-2 rounded">2px 环</button>
<button class="ring-4 ring-blue-500 px-4 py-2 rounded">4px 环</button>

焦点环

<button class="focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 px-4 py-2 rounded bg-blue-500 text-white">
焦点环效果
</button>

环偏移

使用 ring-offset-{width} 设置环与元素之间的偏移:

<button class="ring-2 ring-blue-500 ring-offset-2 px-4 py-2 rounded">偏移环</button>
<button class="ring-2 ring-blue-500 ring-offset-4 px-4 py-2 rounded">更大偏移</button>

环偏移颜色

<button class="ring-2 ring-blue-500 ring-offset-2 ring-offset-gray-100 px-4 py-2 rounded">
自定义偏移颜色
</button>

轮廓

轮廓与边框类似,但不占用空间,常用于可访问性。

<button class="outline outline-2 outline-blue-500 px-4 py-2 rounded">轮廓按钮</button>
<button class="outline-none focus:outline-2 focus:outline-blue-500 px-4 py-2 rounded">焦点轮廓</button>

轮廓偏移:

<button class="outline outline-2 outline-offset-2 outline-blue-500 px-4 py-2 rounded">
偏移轮廓
</button>

实战示例

输入框样式

<div class="space-y-4">
<!-- 基础输入框 -->
<input type="text" class="border border-gray-300 rounded-lg px-4 py-2 w-full focus:border-blue-500 focus:ring-2 focus:ring-blue-200 outline-none transition" placeholder="基础输入框">

<!-- 带错误状态 -->
<input type="text" class="border-2 border-red-500 rounded-lg px-4 py-2 w-full focus:border-red-500 focus:ring-2 focus:ring-red-200 outline-none" placeholder="错误状态">

<!-- 带成功状态 -->
<input type="text" class="border-2 border-green-500 rounded-lg px-4 py-2 w-full focus:border-green-500 focus:ring-2 focus:ring-green-200 outline-none" placeholder="成功状态">
</div>

卡片边框

<div class="border border-gray-200 rounded-lg p-6 hover:border-blue-500 hover:shadow-lg transition-all duration-300">
<h3 class="font-semibold text-lg">悬停卡片</h3>
<p class="text-gray-600 mt-2">悬停时边框变色并添加阴影</p>
</div>

导航列表

<nav class="divide-y divide-gray-100">
<a href="#" class="flex items-center justify-between p-4 hover:bg-gray-50 transition">
<span>首页</span>
<span class="text-gray-400"></span>
</a>
<a href="#" class="flex items-center justify-between p-4 hover:bg-gray-50 transition">
<span>产品</span>
<span class="text-gray-400"></span>
</a>
<a href="#" class="flex items-center justify-between p-4 hover:bg-gray-50 transition">
<span>关于</span>
<span class="text-gray-400"></span>
</a>
</nav>

标签样式

<div class="flex gap-2">
<span class="border border-blue-500 text-blue-500 px-3 py-1 rounded-full text-sm">标签</span>
<span class="border border-green-500 text-green-500 px-3 py-1 rounded-full text-sm">标签</span>
<span class="border border-red-500 text-red-500 px-3 py-1 rounded-full text-sm">标签</span>
</div>

头像边框

<div class="flex -space-x-2">
<img class="w-10 h-10 rounded-full border-2 border-white" src="avatar1.jpg" alt="">
<img class="w-10 h-10 rounded-full border-2 border-white" src="avatar2.jpg" alt="">
<img class="w-10 h-10 rounded-full border-2 border-white" src="avatar3.jpg" alt="">
<div class="w-10 h-10 rounded-full border-2 border-white bg-gray-200 flex items-center justify-center text-sm">
+5
</div>
</div>

渐变边框

<div class="relative p-[2px] rounded-lg bg-linear-to-r from-pink-500 via-purple-500 to-blue-500">
<div class="bg-white dark:bg-gray-900 rounded-lg p-4">
<p class="text-gray-700 dark:text-gray-300">渐变边框效果</p>
</div>
</div>

表格边框

<table class="min-w-full border border-gray-200 rounded-lg overflow-hidden">
<thead class="bg-gray-50">
<tr>
<th class="border-b border-gray-200 px-4 py-3 text-left">姓名</th>
<th class="border-b border-gray-200 px-4 py-3 text-left">邮箱</th>
<th class="border-b border-gray-200 px-4 py-3 text-left">状态</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
<tr>
<td class="px-4 py-3">张三</td>
<td class="px-4 py-3">[email protected]</td>
<td class="px-4 py-3">
<span class="inline-flex items-center rounded-full bg-green-100 px-2 py-1 text-xs text-green-700">
活跃
</span>
</td>
</tr>
<tr>
<td class="px-4 py-3">李四</td>
<td class="px-4 py-3">[email protected]</td>
<td class="px-4 py-3">
<span class="inline-flex items-center rounded-full bg-yellow-100 px-2 py-1 text-xs text-yellow-700">
待审核
</span>
</td>
</tr>
</tbody>
</table>

小结

本章介绍了 Tailwind CSS 的边框工具类:

  • 边框宽度:使用 borderborder-2border-4 等设置
  • 边框样式:支持实线、虚线、点线、双线等
  • 边框颜色:支持任意颜色和透明度
  • 圆角:从 rounded-nonerounded-full
  • 分割线:使用 divide-xdivide-y 在元素间添加边框
  • :使用 ring 创建焦点状态效果
  • 轮廓:使用 outline 创建无障碍轮廓线

下一章,我们将学习效果与滤镜的使用方法。