html - CSS 多行链接,可调整下划线粗细以及字母和下划线之间的垂直间距
问题描述
目标
- 多行链接
- 下划线粗细可调
- 字母和下划线之间的垂直间距可调(下图中的红线)
- 不允许使用包装器(1 个链接 = 1 个标签)
我知道的链接创建方法
text-decoration
: 字母和下划线之间的垂直间距不可调display: inline-block
+border-bottom
+padding + bottom
: 不支持多行
箱形阴影法
使用下面的解决方案,我们在字母和粗下划线之间有垂直空间的多行链接。
a {
text-decoration: none;
}
.Link {
padding-bottom: 1px;
box-shadow: inset -3px -6px 0 -4px blue;
}
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti <a href="#" class="Link"> quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus.</a> Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
此解决方案的问题在于它仅适用于-3px -6px 0 -4px
box-shadow 设置。对 box-shadow 参数稍作改动就会破坏视图。
这意味着下划线粗细和字母与下划线之间的垂直间距均不可调整。
至少,如何调整它并不明显。我不明白如何通过实验调整它。
好吧,CSS 实现可以是任意复杂的,但它的复杂性必须封装到 CSS 预处理器 mixin 中。换句话说,我需要这样的 API:
@mixin multilineLink(
underilineThickness,
verticalSpaceBetweenLettersAndUnderiline
) {
// ...solution
}
如果不可能,我不敢相信:自定义下划线厚度和间隙的多线链接是市场的基本需求,而不是像特技飞行那样复杂的视觉效果。
解决方案
考虑背景渐变。
线条的粗细/位置可通过根据需要更改 % 值进行调整。
a {
text-decoration: none;
}
.Link {
padding-bottom: 1px;
background: linear-gradient(to bottom, transparent 92%, blue 92%);
}
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti <a href="#" class="Link"> quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus.</a>Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur
aut perferendis doloribus asperiores repellat.
推荐阅读
- android - 错误:程序类型已存在:android.support.v4.app.ActivityCompat$1
- linux - awk 搜索变量的变量
- java - 在我的 2-3 树中插入一个值时,我没有得到预期值
- c - 我的程序应该在他们的球队名称下列出球员的分数,但打印出错误的分数。我怎样才能解决这个问题?
- c# - c#反向代理不返回来自1个内部服务的响应
- python - 在 VS Code 中使用 Python 和节点进程调试应用程序
- json - 从scala中的复杂对象反序列化json字段
- javascript - React.js:将参数传递给事件处理程序的最有效方法,而无需在组件中使用 bind()
- python - 程序停止后的 Python tkinter 和海龟错误
- r - 由于 Kwtsum 中的错误,Kres 函数无法正常执行,“K 函数中的权重是无限的或 NA”