css 带跨度的下划线分隔符具有填充或边距

piah890a  于 2023-08-09  发布在  其他
关注(0)|答案(3)|浏览(103)

当内部有<span>标签,并且设置了左/右填充或边距时,如何保持<a>标签下划线从左到右运行而不中断?了解为什么会发生这种情况也会有所帮助。
我可能会使用框阴影或边框底部代替,但我不寻找这些解决方案。

span {
  padding-right: 10px;
}

个字符

e3bfsja2

e3bfsja21#

在你的例子中,padding会在两个文本之间增加10px的空间,所以我们可以使用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>

的字符串

pengsaosao

pengsaosao2#

对于任何在2023年遇到这个问题的人(比如我),我有一些好消息要分享。
目前,正如Temani在2018年提到的,下划线的行为在CSS 2.1中定义:
下划线、上划线和贯穿行仅应用于文本(包括白色、字母间距和单词间距):跳过边距、边框和填充。用户代理不能在非文本内容上呈现这些文本装饰。例如,图像和内联块不能带下划线。
然而,CSS文本装饰模块,第3级,说了以下内容(强调我自己的):
请注意,CSS 2.1要求始终跳过边距、边框和填充。在此级别中,默认情况下仅跳过装饰框的边距、边框和填充。在未来,CSS2.1可能会更新以匹配这个新的默认值。此外,在Level 4中,需要控制前导/尾随空格,并且默认情况下将应用于HTML <ins><del>元素。
这意味着修饰框的任何后代都将修饰其整个边距框,除非使用级别4中定义的text-decoration-skip-*属性进行指定。
因此,这个问题的一个新的可能答案是简单地等待,直到文本装饰级别3成为标准(或至少直到它被浏览器供应商实现)。它目前是一个 * 候选推荐草案 *,浏览器 * 可以 * 实现,但在正式被认为是“标准”之前需要成为一个 * 推荐 *。
至于什么时候,我不知道,但我觉得值得一提。

41ik7eoe

41ik7eoe3#

删除填充和插入空格将是一个选项。

<a href="#">
  <span>&lt; </span>
  <span>Previous page</span>
</a>

字符串

相关问题