美观的文本下划线

CSSCSSBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用 CSS 创建一个美观的文本下划线,且不会裁剪下行字母。通过结合使用 text-shadow 和带有线性渐变的 background-image,我们可以创建一个渐变效果,该渐变将充当实际的下划线,同时确保文本仍可选中。此技术为 text-decoration: underline 提供了一种更具视觉吸引力的替代方案。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 100%。获得了学习者 100% 的好评率。

美观的文本下划线

虚拟机中已经提供了 index.htmlstyle.css

为避免下行字母裁剪下划线,使用具有四个值的 text-shadow 创建一个粗阴影,覆盖下行字母与下划线相交的线条。确保 text-shadow 颜色与 background 颜色匹配,并根据较大字体调整 px 值。使用带有 linear-gradient()currentColorbackground-image 创建实际的下划线。设置 background-positionbackground-repeatbackground-size 将渐变放置在正确的位置。使用 ::selection 伪类选择器确保文本阴影不会干扰文本选择。请注意,此效果原生实现为 text-decoration-skip-ink: auto,但对下划线的控制较少。

以下是一个示例代码片段:

<div class="container">
  <p class="pretty-text-underline">
    Pretty text underline without clipping descenders.
  </p>
</div>
.container {
  background: #f5f6f9;
  color: #333;
  padding: 8px 0;
}

.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::selection {
  background-color: rgba(0, 150, 255, 0.3);
  text-shadow: none;
}

请点击右下角的“Go Live”在端口 8080 上运行网络服务。然后,你可以刷新“Web 8080”标签页来预览网页。

总结

恭喜你!你已经完成了“美观的文本下划线”实验。你可以在 LabEx 中练习更多实验来提升你的技能。