我在处理与以下内容相关的代码时注意到了这一点(奇怪?)a:div 周围的链接 - div 内的样式 https://stackoverflow.com/questions/13595357/alink-around-div-styling-inside-div
给定这个 HTML:
<a id="foo" href="foobar">
<div id="bar">
<h2 id="baz">Foo</h2>
</div>
</a>
这个CSS(添加背景颜色以显示结构):
a {
display: block;
padding: 20px;
background-color: rgb(240,240,240);
}
#bar {
width: 200px;
height: 100px;
background-color: rgb(220,220,220);
}
#baz {
padding: 20px;
text-decoration: none;
}
Fiddle https://jsfiddle.net/xD6f9/
Chrome 将匹配的 CSS 规则显示为包含text-decoration: none;
但文本确实带有下划线:
(source: pangram.net http://pangram.net/sandbox/td-chrome-console.png)
同样,使用 Firebug,Firefox 返回null
为了textDecoration
计算样式:
(source: pangram.net http://pangram.net/sandbox/td-firebug.png)
MDN 是这么说的text-decoration适用于所有元素 https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration.
我意识到有一个简单的解决方法,只需应用text-decoration
财产给a
链接,但这不是我所期望的行为。谁能解释这个(明显的)差异?
Edit:我相信答案就在这里:线条装饰:下划线、上划线和删除线 https://www.w3.org/TR/css-text-decor-3/#line-decoration
当指定或传播到建立的块容器时
内联格式化上下文,装饰被传播到
匿名内联框,包装所有流入的内联级子级
块容器的。
但我仍然不完全明白发生了什么事。