2012-12-13 73 views
1

问题:现有资源依赖关系(我不允许修改或从构建中删除)其中包含指示不需要的按钮样式的样式表。我想以某种方式克服此样式表对页面中按钮样式的影响。如何克服现有的CSS并将按钮样式更改为默认的Windows样式按钮?

问题:使用我自己的本地样式表,如何恢复为默认的Windows css按钮样式(背景,形状,文本)? - 我不知道css属性应该是什么等(我假设我将不得不使用“!重要”短语等)

回答

1

你不会,也不应该使用!重要的。您只需按照CSS特性和继承的原则正确覆盖。

Explanation of CSS Inheritance

例如 - 假设你的 '无用' 的按钮样式是这样的:

<input type="button" class="unwanted" /> 

而且你已经有了CSS在你的(不可编辑)样式表:

.unwanted { 
fooRule: whatever; 
barRule: whatever; 
} 

使用继承,您只需编写自己的外部样式表。注意事项:

(1)您应该将其放在包含'不想要的'样式表引用的现有值之下。继承按顺序处理外部样式表。这遵循“最接近规则赢”的原则。 (2)您编写CSS规则的方式必须比当前应用不需要的样式的规则更具体。再次,上述链接真的有助于解释这一点。

回到我们前面的例子,不想要的风格只是被一类“不想要的”应用。您的规则可以覆盖而无需编辑HTML。或者,您可以编辑HTML - 这取决于您。这也取决于您想要影响按钮样式的全局。

如果你想在全球范围内影响与“无用”类中的所有按钮,你会怎么做:

input[type='button'] .unwanted { 
fooRule:override; 
} 

如果你只是想改变一些有不必要的风格的按钮,你反而会做:

.unwanted.newRule { 
fooRule:override; 
} 

然后你会国防部您的HTML是:

<input type="button" class="unwanted newRule"> 

注意.U nwanted.newRule意味着它只会影响'元素'和一个不需要的和newRule的类。如果不需要的样式设置这样它不会改变任何东西:

<form class="unwanted"> 
    <input type="button" class="newRule" /> 
</form> 

的原因是.unwanted.newRule意味着“两个类都在相同的元素”。您将其更改为:

.unwanted .newRule {foo} 

所以 - 我的观点是,有一吨的正确地利用CSS的特异性和继承,并做你想做的事,而不必使用语义正确的方式很重要。

在附注中,您必须使用的唯一原因!重要的是,如果CSS样式化按钮实际上是使用JavaScript将'style'属性写入HTML元素的。如果是这样的话,(1)不要使用JS,因为这是使用JS进行样式设计的可怕方法,(2)您必须使用!important重写JS应用的内联样式。再次,这是因为级联的工作原理 - 在这种情况下,CSS通过(1)浏览器(用户代理),(2)外部CSS,(3)内部'head'css,(4)内部内联css, (5)作者!重要声明,(6)用户!重要声明。

+0

谢谢,迈克! – sairn

3

每个浏览器都有自己的一套默认CSS规则。没有“Windows”的CSS,除非你明确提到IE最能匹配所说的风格。您需要找到您的首选浏览器的默认设置,并将它们追加到新的CSS之后,以将它们重写为默认主题。

一些常用的浏览器默认样式:

+0

应该指出,它只能模拟一个特定浏览器的按钮样式。如果它是Opera,按钮看起来就像是Opera的默认设置,Firefox的默认设置是Firefox等等,但是不可能回到默认设置。 – cimmanon

+0

不仅仅是CSS,而且很容易使用JS或PHP:'switch (userAgent){case“opera”:include css/opera/reset.css .. ..等等 – AlienWebguy

2

不要使用!important

而是具有较高的特异性定义按钮样式并给你的按钮所需的外观。因此,如果在原来的样式表,你有

button { ... } 

然后在你的样式做

#parent button { ... } 
+0

所以这是我的帖子的TL:DR版本,虽然这可能不工作,取决于CSS和HTML(和可能是任何JS)都已实现。这应该工作,但它可能不会 - 例如。如果他有JS将样式属性写入HTML。 –

+0

@MikeEarley OP说*“...其中包含一个样式表,指示不需要的按钮样式”*,所以我想没有JS参与。也没有JS标签的问题.. –

+0

是的,好点。该样式表中仍有可能出现CSS不可思议的情况,这仍然会发生冲突。嘿,你几乎肯定是正确的!,我说了同样的话,所以我想我的评论是愚蠢的,没有必要:) –