如何使用外部CSS覆盖内联样式?

6

我正在尝试重新样式化由asp.net gridview控件生成的表格。问题在于gridview会生成内联样式。我该如何让浏览器呈现我的css而不是html样式属性?

9个回答

13

你可以在你的CSS文件中尝试使用!important


IE7正确支持!important。只要在同一声明块中不再次声明相同的属性,IE6也将支持!important。 - DavGarcia

3

2
你可以尝试在CSS样式定义后添加"!important",如这篇文章所述,或者按照Ryan Lanciaux之前的建议进行操作。

2
根据CSS规范,元素选择器的特异性为1,类选择器的特异性为10,ID选择器的特异性为100,而内联样式的特异性为1000。 特异性越高,就会覆盖特异性较低的样式,因此内联样式始终优先。 但是,有一种方法可以解决这个问题。 !important声明将覆盖所有不重要的声明。 无论样式的来源是什么,都会输给具有!important声明的任何样式。
来源:Eric A. Meyer的CSS Web Design。

1
CSS规范并未说明不同选择器具有不同的值。它只是对不同类型的选择器进行计数,并按每种类型从最重要到最不重要进行排序。如果内联样式的值为1000,而ID的值为100,则包含11个ID的声明将具有优先权,但实际情况并非如此。任何数量的ID或类都无法超越内联样式。 !important是使用CSS覆盖内联样式的唯一方法。来源:http://www.w3.org/TR/CSS2/cascade.html#specificity - smdrager

1

我认为您需要使用JavaScript来覆盖样式。jQuery可以使这变得非常容易。


1

0

你正在使用主题吗?主题会创建内联样式。为了摆脱它们,你可以关闭网格视图的主题:

<asp:GridView EnableTheming="false" ... />

0

不幸的是,内联 CSS 总是应用于元素的最后一个样式,因此内联样式将始终覆盖外部样式。

如果 Gridview 生成的样式让您感到困扰,请查看 ASP.NET CSS 友好控件适配器(http://www.asp.net/CssAdapters/)。这是一个很棒的项目。


不是真的,!important比任何其他东西的优先级都高。 - annakata

0

内联样式优先于外部样式。除非使用!Important,否则无法覆盖。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接