【发布时间】:2018-02-13 18:03:20
【问题描述】:
我在 ASP.NET MVC 应用程序中使用 ReStart Bootstrap 模板,并在子样式表中应用了一堆 CSS 覆盖。出于某种原因,并不是所有的覆盖都在我的 Chrome 浏览器中生效,尽管我很肯定选择器的命名都是正确的。我还在 HTML 标记中的父表单链接之后放置了指向子样式表的链接,以确保它以正确的顺序加载。
这是一个示例,其中我只是更改单个元素的背景颜色:
style.css 表单中出现的父样式:
#social_media_wrapper {
background: #428bca;
}
site.css 表单中的子样式:
#social_media_wrapper {
background: #ff8000;
}
这里是元素的 HTML 参考:
<div id="social_media_wrapper">
<a href="https://www.linkedin.com" target="_blank"><i class="fa fa-linkedin-square"></i></a>
<a href="http://stackoverflow.com"></i></a>
<a href="https://github.com" target="_blank"><i class="fa fa-github-square" target="_blank"></i></a>
</div>
不确定这里还会缺少什么会导致浏览器忽略这些子样式,因为标记为!important 的父样式中没有任何内容可以防止子样式被覆盖(尤其是因为其他子样式住在同一个文档中的人会毫无问题地覆盖他们的父母)。
【问题讨论】:
-
您是否尝试过在子样式表中添加
!important进行调试?这jsfiddle 证明浏览器将优先考虑顺序加载的两个选择器中的第二个 -
感谢@ToniLeigh 的调试建议。发现我在文档顶部缺少一个选择器的结尾大括号,Visual Studio 没有捕捉到(但 Chrome 显然捕捉到了)。
-
不错,也打算推荐 chrome 检查器,太棒了!
-
作为记录,这是
!important有用的罕见情况之一,即。它很可能会覆盖其他选择器并允许您消除失败的文件加载或选择器格式错误,它并不完全是万无一失的,如果您的 css 仍然没有出现,那么可能还有另一个!important覆盖它
标签: html css asp.net-mvc overriding