1

问题: 一个现有的资源依赖项(我不允许更改或从构建中删除),其中包含指示不需要的按钮样式的样式表。我想以某种方式克服此样式表对我页面中按钮样式的影响。

问题: 使用我自己的本地样式表,我怎样才能恢复到默认的 Windows css 按钮样式(背景、形状、文本)?-我不知道 css 属性应该是什么,等等(我假设我必须使用“!important”短语等)

4

3 回答 3

3

每个浏览器都有自己的一组默认 CSS 规则。没有“Windows”CSS,除非您明确提到 IE,它尽最大努力匹配所述样式。您需要找到首选浏览器的默认设置,并将它们附加到新 CSS 之后,以将它们否决回默认主题。

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

于 2012-12-13T16:11:34.117 回答
2

不要使用!important

而是以更高的特异性定义您的按钮样式,并为您的按钮提供所需的外观。所以如果在原始样式表中你有

button { ... }

然后在你的样式表中做

#parent button { ...  }
于 2012-12-13T16:13:06.770 回答
1

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

CSS继承的解释

例如——假设你的“不需要的”按钮样式是这样的:

<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">

请注意,.unwanted.newRule 意味着它只会影响具有不需要和 newRule 类的“元素”。如果不需要的样式是这样设置的,它不会改变任何东西:

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

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

.unwanted .newRule {foo}

所以——我的观点是,有很多语义上正确的方法可以正确地利用 CSS 特异性和继承性,并做你想做的事,而不必使用 !important。

附带说明一下,您必须使用 !important 的唯一原因是,按钮的 CSS 样式是否实际上是使用将“样式”属性写入 HTML 元素的 javascript 应用的。如果是这种情况,(1)不要使用那个 JS,因为这是使用 JS 进行样式设置的可怕方法,(2)你将不得不使用 !important 来覆盖 JS 应用的内联样式。同样,这是因为级联的工作原理——在这种情况下,CSS 由 (1) 浏览器(用户代理)、(2) 外部 css、(3) 内部“head” css、(4) 内部内联 css 应用, (5) author !important 声明,(6) user !important 声明。

于 2012-12-13T16:28:56.860 回答