ASP.NET错误正在添加内联CSS和覆盖样式

时间:2014-06-25 17:55:13

标签: css asp.net asp.net-mvc

我有一个单页的MVC网络应用程序。发生服务器错误时,我们会在同一页面的对话框中显示异常。 ASP.NET YSOD添加了内联CSS。由于添加到BODY元素的样式,这会更改整个应用程序的字体。

有没有办法将添加的CSS划分为该对话框?或者在关闭对话框时删除添加的CSS样式?或者编辑样式和错误页面以使样式不是全局的?

这是添加的内联CSS:

<style>
    body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
    p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
    b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
    H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
    H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
    pre {font-family:"Lucida Console";font-size: .9em}
    .marker {font-weight: bold; color: black;text-decoration: none;}
    .version {color: gray;}
    .error {margin-bottom: 10px;}
    .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>

1 个答案:

答案 0 :(得分:0)

有几种方法可以克服这个问题。首先,你总是可以在样式标签的末尾设置!important。

<style type="text/css">
  body {font-family:"Verdana" !important;font-weight:normal !important;font-size: .7em !important;color:black !important;} 
</style>

虽然我发现这很麻烦而烦人。在我看来,更好的路径,除非它将css添加到实际元素(即<div style="font-size:15px;">Testing</div>),将弹出窗口元素包装在带有ID的包装器中,然后根据包装器设置所有css这是孩子们。当您在代码上设置更高的特异性时,它将覆盖较低的级别。


考虑三个代码片段:

A: h1
B: #content h1
C: <div id="content">
<h1 style="color: #fff">Headline</h1>
</div>

A的特异性为0,0,0,1(一个元素),B的特异性为0,1,0,1(一个ID参考点和一个元素),C的特异性值是1,0,0,0,因为它是一个内联样式。 以来 0001 = 1&lt; 0101 = 101&lt; 1000, 第三条规则具有更高的特异性,因此将适用。如果第三条规则不存在,则应用第二条规则。


参考http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

总的来说,你将如何处理它,但如果你能掌握特异性,那么使用它实际上要好得多。