背景与渐变
背景是网页设计中最重要的视觉元素之一。Tailwind CSS 提供了丰富的背景工具类,包括背景颜色、背景图片、渐变效果等。本章将详细介绍如何使用这些工具类创建精美的背景效果。
背景颜色
基本用法
使用 bg-{color}-{shade} 设置背景颜色:
<div class="bg-white p-4">白色背景</div>
<div class="bg-gray-100 p-4">浅灰背景</div>
<div class="bg-blue-500 p-4 text-white">蓝色背景</div>
<div class="bg-red-500 p-4 text-white">红色背景</div>
背景透明度
使用斜杠语法设置背景颜色透明度:
<div class="bg-blue-500/50 p-4">50% 透明度</div>
<div class="bg-blue-500/75 p-4">75% 透明度</div>
<div class="bg-blue-500/90 p-4">90% 透明度</div>
也可以使用任意值:
<div class="bg-blue-500/[0.25]">25% 透明度</div>
<div class="bg-blue-500/[71.37%]">71.37% 透明度</div>
背景继承
<div class="bg-inherit">继承父元素背景</div>
<div class="bg-current">使用当前颜色作为背景</div>
<div class="bg-transparent">透明背景</div>
渐变效果
Tailwind CSS v4 提供了强大的渐变工具类,支持线性渐变、径向渐变和锥形渐变。
线性渐变
使用 bg-linear-to-{direction} 设置渐变方向,配合 from-{color}、via-{color}、to-{color} 设置颜色:
渐变方向:
| 类名 | 方向 |
|---|---|
bg-linear-to-t | 向上 |
bg-linear-to-tr | 向右上 |
bg-linear-to-r | 向右 |
bg-linear-to-br | 向右下 |
bg-linear-to-b | 向下 |
bg-linear-to-bl | 向左下 |
bg-linear-to-l | 向左 |
bg-linear-to-tl | 向左上 |
基本渐变:
<!-- 从左到右的渐变 -->
<div class="h-14 bg-linear-to-r from-cyan-500 to-blue-500"></div>
<!-- 从下到上的渐变 -->
<div class="h-14 bg-linear-to-t from-sky-500 to-indigo-500"></div>
<!-- 对角线渐变 -->
<div class="h-14 bg-linear-to-bl from-violet-500 to-fuchsia-500"></div>
指定角度:
使用 bg-linear-{angle} 指定精确角度:
<!-- 65度角渐变 -->
<div class="h-14 bg-linear-65 from-purple-500 to-pink-500"></div>
<!-- 135度角渐变 -->
<div class="h-14 bg-linear-135 from-blue-500 to-teal-500"></div>
渐变色标
双色渐变:
<div class="h-14 bg-linear-to-r from-blue-500 to-purple-500"></div>
三色渐变:
使用 via-{color} 添加中间色:
<div class="h-14 bg-linear-to-r from-indigo-500 via-purple-500 to-pink-500"></div>
指定色标位置:
使用 from-{position}、via-{position}、to-{position} 精确控制颜色位置:
<div class="h-14 bg-linear-to-r from-indigo-500 from-10% via-sky-500 via-30% to-emerald-500 to-90%"></div>
径向渐变
使用 bg-radial 创建从中心向外扩散的渐变:
<!-- 基本径向渐变 -->
<div class="size-24 rounded-full bg-radial from-pink-400 from-40% to-fuchsia-700"></div>
<!-- 指定渐变中心位置 -->
<div class="size-24 rounded-full bg-radial-[at_50%_75%] from-sky-200 via-blue-400 to-indigo-900 to-90%"></div>
<!-- 左上角为中心 -->
<div class="size-24 rounded-full bg-radial-[at_25%_25%] from-white to-zinc-900 to-75%"></div>
锥形渐变
使用 bg-conic 创建围绕中心点旋转的渐变:
<!-- 基本锥形渐变 -->
<div class="size-24 rounded-full bg-conic from-blue-600 to-sky-400 to-50%"></div>
<!-- 180度起始 -->
<div class="size-24 rounded-full bg-conic-180 from-indigo-600 via-indigo-50 to-indigo-600"></div>
<!-- 递减模式 -->
<div class="size-24 rounded-full bg-conic/decreasing from-violet-700 via-lime-300 to-violet-700"></div>
渐变插值模式
使用修饰符控制渐变的颜色插值方式:
<!-- sRGB 插值(传统) -->
<div class="h-14 bg-linear-to-r/srgb from-indigo-500 to-teal-400"></div>
<!-- HSL 插值 -->
<div class="h-14 bg-linear-to-r/hsl from-indigo-500 to-teal-400"></div>
<!-- OKLAB 插值(默认) -->
<div class="h-14 bg-linear-to-r/oklab from-indigo-500 to-teal-400"></div>
<!-- OKLCH 插值 -->
<div class="h-14 bg-linear-to-r/oklch from-indigo-500 to-teal-400"></div>
插值模式说明:
| 模式 | 说明 |
|---|---|
srgb | 传统 sRGB 颜色空间插值 |
hsl | HSL 颜色空间插值,色相平滑过渡 |
oklab | OKLAB 颜色空间,感知均匀(默认) |
oklch | OKLCH 颜色空间,更鲜艳的颜色 |
longer | 色相长路径插值 |
shorter | 色相短路径插值 |
increasing | 色相递增插值 |
decreasing | 色相递减插值 |
背景图片
设置背景图片
使用 bg-[url(...)] 语法设置背景图片:
<div class="bg-[url('/img/mountains.jpg')] bg-cover bg-center h-64">
背景图片
</div>
移除背景图片
<div class="bg-none">无背景图片</div>
使用 CSS 变量
<div class="bg-(image:--my-background-image)">使用 CSS 变量</div>
背景大小
控制背景图片的尺寸:
<div class="bg-auto">自动大小</div>
<div class="bg-cover">覆盖容器(保持比例)</div>
<div class="bg-contain">包含在容器内(保持比例)</div>
bg-cover 和 bg-contain 的区别:
bg-cover:图片会缩放以完全覆盖容器,可能会裁剪部分内容bg-contain:图片会缩放以完全显示在容器内,可能会留白
背景位置
控制背景图片的位置:
<div class="bg-bottom">底部对齐</div>
<div class="bg-center">居中对齐</div>
<div class="bg-left">左对齐</div>
<div class="bg-right">右对齐</div>
<div class="bg-top">顶部对齐</div>
<!-- 组合位置 -->
<div class="bg-left-top">左上角</div>
<div class="bg-right-bottom">右下角</div>
任意位置值
<div class="bg-[center_top_1rem]">自定义位置</div>
<div class="bg-[right_2rem_bottom_1rem]">右下偏移</div>
背景重复
控制背景图片的重复方式:
<div class="bg-repeat">重复(默认)</div>
<div class="bg-no-repeat">不重复</div>
<div class="bg-repeat-x">水平重复</div>
<div class="bg-repeat-y">垂直重复</div>
<div class="bg-repeat-round">整数次重复</div>
<div class="bg-repeat-space">等间距重复</div>
背景附着
控制背景图片随滚动的方式:
<div class="bg-fixed">固定背景(不随滚动)</div>
<div class="bg-local">随内容滚动</div>
<div class="bg-scroll">随元素滚动(默认)</div>
背景裁剪
控制背景的绘制区域:
<div class="bg-clip-border">裁剪到边框(默认)</div>
<div class="bg-clip-padding">裁剪到内边距</div>
<div class="bg-clip-content">裁剪到内容区域</div>
<div class="bg-clip-text">裁剪到文字(文字遮罩效果)</div>
文字遮罩效果:
<div class="bg-linear-to-r from-pink-500 to-violet-500 bg-clip-text text-transparent text-4xl font-bold">
渐变文字效果
</div>
背景原点
控制背景的定位区域:
<div class="bg-origin-border">从边框开始</div>
<div class="bg-origin-padding">从内边距开始(默认)</div>
<div class="bg-origin-content">从内容区域开始</div>
实战示例
渐变按钮
<button class="bg-linear-to-r from-blue-500 to-purple-500 hover:from-blue-600 hover:to-purple-600 text-white font-semibold px-6 py-3 rounded-lg shadow-lg transition-all duration-300">
渐变按钮
</button>
渐变卡片
<div class="bg-linear-to-br from-white to-gray-100 dark:from-gray-800 dark:to-gray-900 rounded-2xl shadow-xl p-8">
<h3 class="text-xl font-bold mb-4">渐变卡片</h3>
<p class="text-gray-600 dark:text-gray-300">
这是一张带有微妙渐变背景的卡片,在暗黑模式下会自动切换颜色。
</p>
</div>
毛玻璃效果
<div class="bg-white/30 backdrop-blur-lg border border-white/20 rounded-xl p-6 shadow-xl">
<h3 class="text-xl font-bold">毛玻璃效果</h3>
<p class="mt-2">使用背景透明度和背景模糊组合实现</p>
</div>
英雄区域背景
<div class="relative h-screen bg-[url('/img/hero.jpg')] bg-cover bg-center">
<!-- 遮罩层 -->
<div class="absolute inset-0 bg-black/50"></div>
<!-- 内容 -->
<div class="relative z-10 flex flex-col items-center justify-center h-full text-white">
<h1 class="text-5xl font-bold mb-4">欢迎访问</h1>
<p class="text-xl">精美的全屏背景效果</p>
</div>
</div>
网格背景
<div class="bg-[linear-gradient(to_right,#80808012_1px,transparent_1px),linear-gradient(to_bottom,#80808012_1px,transparent_1px)] bg-[size:24px_24px]">
<div class="p-8">
网格背景效果
</div>
</div>
点状背景
<div class="bg-[radial-gradient(circle,#00000012_1px,transparent_1px)] bg-[size:16px_16px]">
<div class="p-8">
点状背景效果
</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-6">
<h3 class="font-bold">渐变边框效果</h3>
<p class="text-gray-600 mt-2">使用渐变背景和内边距实现</p>
</div>
</div>
彩虹渐变
<div class="h-4 bg-linear-to-r from-red-500 via-yellow-500 via-green-500 via-blue-500 to-purple-500 rounded-full"></div>
动态渐变
<div class="h-32 bg-[linear-gradient(45deg,#ff6b6b,#4ecdc4,#45b7d1,#96e6a1,#dfe6e9,#ff6b6b)] bg-[length:400%_400%] animate-[gradient_8s_ease_infinite]">
动态渐变背景
</div>
配合自定义动画:
@keyframes gradient {
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
小结
本章介绍了 Tailwind CSS 的背景工具类:
- 背景颜色:使用
bg-{color}设置纯色背景,支持透明度 - 线性渐变:使用
bg-linear-to-{direction}配合颜色色标 - 径向渐变:使用
bg-radial创建从中心扩散的渐变 - 锥形渐变:使用
bg-conic创建旋转渐变效果 - 背景图片:控制大小、位置、重复、附着等
- 背景裁剪:使用
bg-clip-text创建渐变文字效果 - 插值模式:使用 OKLAB、OKLCH 等现代颜色空间
下一章,我们将学习边框和分割线的使用方法。