当前位置: 首页 > 面试题库 >

为什么显示:inline-block; 从子元素中删除下划线?

聂煜
2023-03-14
问题内容

最近,我回答了一个问题,OP希望text-decoration: underline;将整个文本包装在a元素中,而不是包装在其中的文本span,所以就像这样

<a href="#"><span>Not Underline</span>Should Be Underlined</a>

所以简单地给

span {
   text-decoration: none;
}

不会删除包裹在span元素内的文本的下划线

但这确实消除了下划线

span {
   text-decoration: none;
   display: inline-block;
}

因此,我制作了spanan inline-block并成功了,这就是我通常的做法。但是,当涉及到解释时,我无法解释为什么这样做实际上会删除下划线,而仅仅使用了下划线text-decoration: none;


问题答案:

在某些情况下,文本修饰从元素传播到某些后代。该规范描述了所有在此发生,不会发生(以及情况的行为被明确未定义)的情况下。在此,以下部分是相关的:

请注意,文本修饰不会传播到浮动和绝对定位的后代,也不会传播到原子内联级别后代(例如内联块和内联表)的内容。

请注意,这种传播与继承不同,完全是一个单独的概念。确实,text-decoration: none并且text-decoration: inherit不会以您期望的方式影响传播:

  • text-decoration: none 只是表示“此元素本身没有文字修饰”,并且
  • text-decoration: inherit表示“此元素与text-decoration其父元素具有相同的指定值”。

在两种情况下,父文本修饰仍将在适用时传播到元素。您可以使用强制内联块对其父代进行相同的文本修饰inherit,但 不能
强制父代通过从其祖先传播而获得的其他修饰。

这也意味着简单地拥有display: inline-block足以防止文本装饰传播。您无需text-decoration: none再次指定-
它已经是初始值。



 类似资料:
  • 具体代码 demo 问题: 为什么a标签设置overflow和不设置overflow 显示效果不同? 不设置如下显示 设置后如下显示 v

  • 效果1 效果2 两段代码的区别: 第一段代码的div为inline-block,第二段为inline。 问题 为什么会出现这种不同的效果 b

  • 问题内容: 说我有一个元素定义为内联块。它的唯一内容是纯文本。当字体很大时,您可以清楚地看到浏览器如何在文本上方和下方添加一些填充。 HTML: CSS: 观察盒子模型,很明显浏览器正在 内容边缘内 添加填充。我需要删除此“填充”,一种方法是简单地更改行高,如下所示: 这在Chrome浏览器中效果很好,但在Firefox中,文本正朝顶部(FF17,Chrome 23,Mac OSX)移动。 有跨浏

  • 本文向大家介绍inline-block、inline和block的区别;为什么img是inline还可以设置宽高?相关面试题,主要包含被问及inline-block、inline和block的区别;为什么img是inline还可以设置宽高?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Block是块级元素,其前后都会有换行符,能设置宽度,高度,margin/padding水平垂直方向都有

  • 本文向大家介绍inline、block、inline-block这三个属性值有什么区别?相关面试题,主要包含被问及inline、block、inline-block这三个属性值有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 CSS显示模块分为内部显示类型和外部显示类型,内部显示类型是定义子元素如何参与内部布局,外部显示类型定义了父元素如何参与外部整个文档流的布局,所以 inline-> i

  • 问题内容: 当您将鼠标悬停在元素上时,我的CSS会更改格式。 HTML: CSS: 在某些情况下,我不想在悬停时应用CSS。一种方法是使用jQuery从div中删除CSS类,但这会破坏其他事情,因为我也使用该类来格式化其子元素。 因此,我提出了一个问题:是否有办法从元素中删除“悬停” css样式? 问题答案: 我将使用两个类。保留测试类,并添加一个名为testhover的第二类,该类仅添加到您要悬