当内部有<span>标签,并且设置了左/右填充或边距时,如何保持<a>标签下划线从左到右运行而不中断?了解为什么会发生这种情况也会有所帮助。我可能会使用框阴影或边框底部代替,但我不寻找这些解决方案。
<span>
<a>
span { padding-right: 10px; }
个字符
e3bfsja21#
在你的例子中,padding会在两个文本之间增加10px的空间,所以我们可以使用letter-spacing和第一个span来创建这个空间。如果您参考规范,您可以阅读:下划线、上划线和贯穿行仅应用于文本(包括 * 白色**、字母间距和单词间距):跳过边距、边框和填充
padding
letter-spacing
span
span:first-child { letter-spacing: 10px; }
个字符为了使其更通用,我们可以考虑使用伪元素letter-spacing来模拟span之间的空间:
.first span:after { content:" "; letter-spacing: 15px; } .second span:after { content:" "; letter-spacing: 30px; } span:last-child::after { display:none; /* no need for last child*/ }
<a href="#"> <span>aa</span> <span>bb</span> <span>cc</span> </a> <br> <a href="#"><span>aa</span><span>bb</span><span>cc</span></a> <br> <a href="#" class="first"> <span>aa</span> <span>bb</span> <span>cc</span> </a> <br> <a href="#" class="first"><span>aa</span><span>bb</span><span>cc</span></a> <br> <a href="#" class="second"> <span>aa</span> <span>bb</span> <span>cc</span> </a>
的字符串
pengsaosao2#
对于任何在2023年遇到这个问题的人(比如我),我有一些好消息要分享。目前,正如Temani在2018年提到的,下划线的行为在CSS 2.1中定义:下划线、上划线和贯穿行仅应用于文本(包括白色、字母间距和单词间距):跳过边距、边框和填充。用户代理不能在非文本内容上呈现这些文本装饰。例如,图像和内联块不能带下划线。然而,CSS文本装饰模块,第3级,说了以下内容(强调我自己的):请注意,CSS 2.1要求始终跳过边距、边框和填充。在此级别中,默认情况下仅跳过装饰框的边距、边框和填充。在未来,CSS2.1可能会更新以匹配这个新的默认值。此外,在Level 4中,需要控制前导/尾随空格,并且默认情况下将应用于HTML <ins>和<del>元素。这意味着修饰框的任何后代都将修饰其整个边距框,除非使用级别4中定义的text-decoration-skip-*属性进行指定。因此,这个问题的一个新的可能答案是简单地等待,直到文本装饰级别3成为标准(或至少直到它被浏览器供应商实现)。它目前是一个 * 候选推荐草案 *,浏览器 * 可以 * 实现,但在正式被认为是“标准”之前需要成为一个 * 推荐 *。至于什么时候,我不知道,但我觉得值得一提。
<ins>
<del>
text-decoration-skip-*
41ik7eoe3#
删除填充和插入空格将是一个选项。
<a href="#"> <span>< </span> <span>Previous page</span> </a>
字符串
3条答案
按热度按时间e3bfsja21#
在你的例子中,
padding
会在两个文本之间增加10px的空间,所以我们可以使用letter-spacing
和第一个span
来创建这个空间。如果您参考规范,您可以阅读:
下划线、上划线和贯穿行仅应用于文本(包括 * 白色**、字母间距和单词间距):跳过边距、边框和填充
个字符
为了使其更通用,我们可以考虑使用伪元素
letter-spacing
来模拟span
之间的空间:的字符串
pengsaosao2#
对于任何在2023年遇到这个问题的人(比如我),我有一些好消息要分享。
目前,正如Temani在2018年提到的,下划线的行为在CSS 2.1中定义:
下划线、上划线和贯穿行仅应用于文本(包括白色、字母间距和单词间距):跳过边距、边框和填充。用户代理不能在非文本内容上呈现这些文本装饰。例如,图像和内联块不能带下划线。
然而,CSS文本装饰模块,第3级,说了以下内容(强调我自己的):
请注意,CSS 2.1要求始终跳过边距、边框和填充。在此级别中,默认情况下仅跳过装饰框的边距、边框和填充。在未来,CSS2.1可能会更新以匹配这个新的默认值。此外,在Level 4中,需要控制前导/尾随空格,并且默认情况下将应用于HTML
<ins>
和<del>
元素。这意味着修饰框的任何后代都将修饰其整个边距框,除非使用级别4中定义的
text-decoration-skip-*
属性进行指定。因此,这个问题的一个新的可能答案是简单地等待,直到文本装饰级别3成为标准(或至少直到它被浏览器供应商实现)。它目前是一个 * 候选推荐草案 *,浏览器 * 可以 * 实现,但在正式被认为是“标准”之前需要成为一个 * 推荐 *。
至于什么时候,我不知道,但我觉得值得一提。
41ik7eoe3#
删除填充和插入空格将是一个选项。
字符串