CSS原生下划线难看,可用border-bottom、background-image或::after伪元素三种方式重写:前者最常用且灵活;后者支持渐变、虚线等精细效果;伪元素适合动态动画和精确定位,同时需禁用text-decoration避免干扰。
CSS 默认的 text-decoration: underline 确实生硬又难看:位置偏低、粗细固定、颜色单一、无法控制长度和间距。想让下划线更精致,关键不是“去掉它”,而是用更可控的方式“重写它”。
这是最常用也最灵活的方法。它把下划线变成一个可完全自定义的底部边框:
border-bottom-width)、颜色(border-bottom-color)、样式(border-bottom-style,如 dashed 或 dotted)padding-bottom 调整文字与线的距离,避免贴得太近display: inline-block 可限制下划线只覆盖文字宽度(默认 border-bottom 在 inline 元素上会撑满行宽)示例:
a {适合需要渐变、虚线、波浪线或带偏移的下划线。核心是用线性渐变模拟一条细线:
background-image: linear-gradient() 创建单像素高、指定颜色的横线background-position 和 background-size 控制它的垂直位置和长度background-repeat: no-repeat 防止重复示例(底部居中、离字 3px 的蓝色细线):
.fancy-underline {当需要悬停动画、不规则形状或独立定位时,伪元素最强大:
position: relative,再用 ::after 绝对定位画线transition 实现鼠标移入时线长延伸或颜色变化示例(悬停时从左向右展开的下划线):
.hover-line {如果项目中混用了多种方式,记得先清除默认干扰:
a { text-decorati
on: none; }
text-decoration: underline 和 border-bottom 同时存在造成视觉叠加text-decoration-skip-ink: auto 让线避开文字降部,更干净