用户代理出于某种原因覆盖了 <a> 标签的 Author css 颜色声明

如何解决用户代理出于某种原因覆盖了 <a> 标签的 Author css 颜色声明

也许这将是一个愚蠢的问题,但为什么 css color 属性不适用于 body div 选择器? 我确信并且我仍然相信它应该起作用。但是没有

它在 w3schools.com 上完美运行 here 但它在我的本地服务器或 codepen.io 上都不起作用

对我来说很明显,在下面的例子中“普通作者声明”

body{color: red;} div{color: red;}

被覆盖。但为什么?

我从阅读文档开始调查,并在 14.4.2 Inheritance and cascading 部分找到了一些有意义的内容

当多个样式规则都适用时使用级联机制 直接指向一个元素。 ...如果找不到规则,下一步 取决于style属性是否可以继承。

所以?我的示例中的声明不起作用的原因可能是“使用级联机制...”或“样式属性可以继承”。

既然没有什么可继承的(我希望),我认为原因在于如何“使用级联机制......”

所以我参考了解释“css级联如何工作”的文档。并找到了这个https://www.w3.org/TR/css-cascade-3/

在那里我们可以了解到,与其他属性相匹配并决定我们在屏幕上看到的元素的最终视觉样式的属性值称为“计算值”。

所以要回答“为什么作者声明被覆盖”,我必须找出锚元素的“颜色属性的“计算值”。

Chrome DevTools 中的“Computed”选项卡帮助了我。我检查了元素,发现“计算值”是

a:-webkit-any-link {
    color: -webkit-link;
    cursor: pointer;
    text-decoration: underline;
}

请查看this screenshot

看到“用户代理样式表”参考非常有趣,因为文档告诉我们任何“作者声明”都会覆盖任何“用户代理声明”,除非后者是!重要

我还就 stackoverflow herehere 的“为什么用户代理声明覆盖作者声明”问题进行了一些其他讨论

我看到的唯一原因是有一个 !Important user agent 声明覆盖了普通作者声明

body{color: red;} div{color: red;}

为了

<a>

html 标签

任何人都请帮助我证明或反对存在任何!Important user agent 声明的想法,该声明覆盖了我在此示例中的普通作者声明。

body{
color: red;
}

div{
color: red;
} 
<body>
  <div class="link">
      <a href="#" class="url">This text should be Red. But it is blue.</a>
    </div>
</body>

解决方法

a 标记的预定义样式比从 body 标记继承的样式more specific

您可以通过直接定位来更改 a 标记中文本的颜色。

body {
  color: green;
}

a {
  color: red;
}
<body>
  <p>Other text in the <code>body</code> is green.</p>
  <a href="#">This text is red.</a>
</body>

预定义的元素样式因浏览器而异,这就是为什么一些开发人员选择使用 normalizing 样式表的原因。它考虑了浏览器默认设置之间的差异,因此您的网站对所有用户都显示一致。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?