巧用 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 技巧不仅无依赖、性能高、兼容性好,还可以在现代浏览器中实现各种创意文字特效,是前端开发者的必备技能之一。


👉 推荐阅读:

相关推荐
一个打工仔的笔记1 天前
使用css实现打开抽屉效果(css过渡动画)
css
fruge1 天前
设计稿还原技巧:解决间距、阴影、字体适配的细节问题
前端·css
kuilaurence1 天前
CSS `border-image` 给文字加可拉伸边框
前端·css
xiangxiongfly9152 天前
CSS link标签
前端·css
十年磨一剑~2 天前
html+js开发一个测试工具
javascript·css·html
爱吃巧克力的程序媛2 天前
将qt界面中加载css或者qss样式
开发语言·css·qt
拉不动的猪2 天前
CSS 像素≠物理像素:0.5px 效果的核心密码是什么?
前端·css·面试
加个鸡腿儿2 天前
锚点跳转-附带CSS样式 & 阻止页面刷新技术方案
前端·javascript·css
程序猿_极客2 天前
【期末网页设计作业】HTML+CSS+JS 美食分享主题网站设计与实现(附源码)
javascript·css·html