CSS 视觉 - 漂亮的下划线

本贴最后更新于 1938 天前,其中的信息可能已经水流花落

2019-07-31

描述

一种较好的可选方案为 text-decoration: underline<u></u>, 但是下行字母不能被下划线所裁剪。但可以使用 text-decoration-skip-ink: auto 来进行解决,然而只有少数字母不会超过下划线。

HTML

<p class="pretty-text-underline">Pretty text underline without clipping descending letters.</p>

CSS

body {
  background-color: #f5f6f9;
}
.pretty-text-underline {
  display: inline;
  text-shadow: 1px 1px #f5f6f9, -1px 1px #f5f6f9, -1px -1px #f5f6f9, 1px -1px #f5f6f9;
  background-image: linear-gradient(90deg, currentColor 100%, transparent 100%);
  background-position: bottom;
  background-repeat: no-repeat;
  background-size: 100% 1px;
}
.pretty-text-underline::-moz-selection {
  background-color: rgba(0, 150, 255, 0.3);
  text-shadow: none;
}
.pretty-text-underline::selection {
  background-color: rgba(0, 150, 255, 0.3);
  text-shadow: none;
}

Demo

说明

  1. text-shadow 使用带有 4 个偏移的设置来覆盖一个 4x4 的区域,以确保下行字母和下划线的相邻处有一个“浑厚”的阴影。
    使用的颜色需要和背景色保持一致。对于大的字体,需要使用一个更大的 px 尺寸。偏移值要使其能够创建一个均等的、浑厚的阴影,当然也可以使用子像素
  2. background-image: linear-gradient(...) 使用文本的颜色创建一个 90 度的渐变(currentColor
  3. background-* 属性设置需要使块的宽度为 100%、高度为 1px,背景位于底部且不能重复。这样就可以在文字下方创建一个 1px 的下划线
  4. ::selection 伪选择器的设置可以保证文字在选中后不会被他的阴影所干扰

浏览器支持

支持率:97.5%
支持情况:

返回总目录

每天 30 秒系列之 CSS

  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 8 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 550 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
Vanessa
我们终此一生,就是要摆脱他人的期待,找到真正的自己。 昆明