巧用 CSS linear-gradient 实现多种下划线文字特效(纯 CSS 无需额外标签)

在日常网页设计中,给文字加下划线是常见的样式需求。

很多人第一时间想到 text-decoration: underline,但这个属性的自定义空间有限,想要实现渐变线、虚线、斜线下划线 等更有设计感的效果,就需要一点小技巧------使用 backgroundlinear-gradient()


✨ 一、基础下划线实现

下面这段代码展示了如何使用 linear-gradient 模拟传统的下划线:

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        body {
            font: 250%/1.6 Baskerville, Palatino, serif;
        }

        a {
            background: linear-gradient(gray, gray) no-repeat;
            background-size: 100% 1px;
            background-position: 0 1.02em;
            text-shadow: .05em 0 white, -.05em 0 white;
        }
    </style>
</head>
<body>
    <p>"The only way to <a>get rid of a temptation</a> is to <a>yield</a> to it."</p>
</body>
</html>

🔍 效果说明:

  • background: linear-gradient(gray, gray) → 定义一条灰色的线;

  • background-size: 100% 1px → 控制线的高度为 1px;

  • background-position: 0 1.02em → 将线定位到文字的下方;

  • text-shadow → 避免文字与下划线重叠时影响阅读。

这段代码能在不使用 border-bottom 的情况下实现干净利落的下划线,并且不会破坏文字间距。


🧩 二、使用虚线样式的下划线

通过调整背景图的重复方式和透明间隔,我们可以轻松得到虚线效果👇

css 复制代码
p:nth-child(2) a {
    background: linear-gradient(90deg, gray 66%, transparent 0) repeat-x;
    background-size: .2em 2px;
    background-position: 0 1em;
}

💡 原理解析:

  • 使用 linear-gradient(90deg, gray 66%, transparent 0) 让每一小段线条中只有 66% 是灰色;

  • 通过 background-repeat: repeat-xbackground-size 让虚线连续平铺;

  • 效果类似 border-bottom: 1px dashed gray,但更灵活、支持渐变和动画。

🔗 效果展示:

这一句文字中每个 <a> 链接都会带有精致的灰色虚线下划线。


💥 三、斜线下划线(高级视觉特效)

下面是第二段代码的实现,它使用两个对角线方向的 linear-gradient 叠加,打造红色斜纹下划线

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <style>
        body {
            font: 250%/1.6 Baskerville, Palatino, serif;
        }

        a {
            background: 
                linear-gradient(-45deg, transparent 40%, red 0, red 60%, transparent 0) 0 1em,
                linear-gradient(45deg, transparent 40%, red 0, red 60%, transparent 0) .1em 1em;
            background-repeat: repeat-x;
            background-size: .2em .1em;
            text-shadow: .05em 0 white, -.05em 0 white;
        }
    </style>
</head>
<body>
    <p>"The only way to <a>get rid of a temptation</a> is to <a>yield</a> to it."</p>
</body>
</html>

🎨 原理解析:

  • 使用两条倾斜的渐变:

    • 第一条 -45deg 方向;

    • 第二条 45deg 方向;

  • 它们组合形成一个 "X" 形的斜线下划线;

  • 通过 repeat-x 实现横向连续平铺;

  • background-size 控制线条密度,.2em .1em 可以根据字体大小微调。

📸 视觉效果:

每个链接文字下方都会有一条红色斜纹线,看起来像织物纹理,非常有设计感。


🧠 四、拓展思路:让下划线更"聪明"

你可以继续利用同样的 linear-gradient 思路,做出以下效果:

  • 渐变色下划线(linear-gradient(to right, red, blue));

  • 波浪线下划线(结合 repeating-linear-gradient);

  • 动态动画下划线(用 background-position 做滑动特效)。

例如👇

css 复制代码
a:hover {
    background: linear-gradient(to right, #ff0080, #ff8c00) no-repeat;
    background-size: 100% 3px;
    background-position: 0 1.05em;
    transition: background-size 0.3s ease;
}

🏁 五、总结

类型 实现方式 优点
普通下划线 linear-gradient(gray, gray) 可控颜色与位置
虚线下划线 linear-gradient(90deg, gray 66%, transparent 0) 轻量无 border
斜线下划线 两个倾斜的 gradient 叠加 独特视觉效果
动态渐变线 to right + transition 适合 hover 动效

传统的 text-decoration 只能满足最基本的下划线需求,而利用 CSS 的 backgroundlinear-gradient,我们可以让文本的表现力提升到新的层次。

这种纯 CSS 技巧不仅无依赖、性能高、兼容性好,还可以在现代浏览器中实现各种创意文字特效,是前端开发者的必备技能之一。


👉 推荐阅读:

相关推荐
会一丢丢蝶泳的咻狗14 小时前
Sass实现,蛇形流动布局
前端·css
EchoEcho19 小时前
记录overflow:hidden和scrollIntoView导致的页面问题
前端·css
im_AMBER19 小时前
告别“玄学”UI:从“删代码碰运气”到“控制 BFC 结界”
前端·css
芳草萋萋鹦鹉洲哦20 小时前
【Tailwind】动画解读:Tailwind CSS Animation Examples
前端·css
Mr Xu_1 天前
前端开发中CSS代码的优化与复用:从公共样式提取到CSS变量的最佳实践
前端·css
Lee川2 天前
CSS盒模型实战:用代码透视 `border-box`与 `content-box`的天壤之别
css
哈里谢顿2 天前
CSS 入门完全指南:从零构建你的第一个样式表
css
. . . . .2 天前
CSS 编写与管理范式 - Tailwind和CSS-in-JS
css
人良爱编程2 天前
Hugo的Stack主题配置记录03-背景虚化-导航栏-Apache ECharts创建地图
前端·javascript·apache·echarts·css3·html5
RFCEO3 天前
前端编程 课程十六、:CSS 盒子模型
css·前端基础课程·css盒子模型·css盒子模型的组成·精准控制元素的大小和位置·css布局的基石·内边距(padding)