简介
在本实验中,我们将学习如何使用 CSS 创建一个美观的文本下划线,且不会裁剪下行字母。通过结合使用 text-shadow 和带有线性渐变的 background-image,我们可以创建一个渐变效果,该渐变将充当实际的下划线,同时确保文本仍可选中。此技术为 text-decoration: underline 提供了一种更具视觉吸引力的替代方案。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在本实验中,我们将学习如何使用 CSS 创建一个美观的文本下划线,且不会裁剪下行字母。通过结合使用 text-shadow 和带有线性渐变的 background-image,我们可以创建一个渐变效果,该渐变将充当实际的下划线,同时确保文本仍可选中。此技术为 text-decoration: underline 提供了一种更具视觉吸引力的替代方案。
虚拟机中已经提供了 index.html
和 style.css
。
为避免下行字母裁剪下划线,使用具有四个值的 text-shadow
创建一个粗阴影,覆盖下行字母与下划线相交的线条。确保 text-shadow
颜色与 background
颜色匹配,并根据较大字体调整 px
值。使用带有 linear-gradient()
和 currentColor
的 background-image
创建实际的下划线。设置 background-position
、background-repeat
和 background-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 中练习更多实验来提升你的技能。