将CSS显示属性重置为默认值

是否有可能用它的默认值覆盖显示属性? 例如,如果我已将其设置为无一种样式,并且我想用默认值将其替换为其他值。

或者是唯一的方法来找出该元素的默认值,然后将其设置为? 想不想知道元素是否通常是块,内联或无论哪个...


浏览器的默认样式在其用户代理样式表中定义,您可以在这里找到它的来源。 不幸的是,级联和继承级别3规范似乎没有提出将样式属性重置为浏览器默认值的方法。 然而,有计划在级联和继承级别4中为此重新引入关键字 - 工作组尚未解决此关键字的名称(该链接目前说revert ,但它不是最终的)。

尽管3级规范引入了initial关键字,但将属性设置为其初始值会将其重置为由CSS定义的默认值,而不是由浏览器定义。 display的初始值是inline ; 这是在这里指定的。 initial关键字是指该值,而不是浏览器默认值。 该规范本身在all属性下进行说明:

例如,如果作者在元素上指定all: initial ,则会阻止所有继承并重置所有属性,就好像级联的作者级别,用户级别或用户代理级别中没有出现任何规则。

这对页面中包含的“小部件”的根元素很有用,该元素不希望继承外部页面的样式。 但是,请注意,应用于该元素的任何“默认”样式(例如,来自诸如<div>块元素上的UA样式表的display: block )也将被吹掉。

所以我猜想现在使用纯CSS的唯一方法是查找浏览器的默认值并手动将其设置为:

div.foo { display: inline-block; }
div.foo.bar { display: block; }

(上面的替代方法是div.foo:not(.bar) { display: inline-block; } ,但涉及修改原始选择器而不是覆盖。)


如果允许使用javascript,则可以将display属性设置为空字符串。 这将导致它使用该特定元素的默认值。

var element = document.querySelector('span.selector');

// Set display to empty string to use default for that element
element.style.display = '';

这里是一个jsbin的链接。

这很好,因为您不必担心不同类型的显示器会回复到( blockinlineinline-blocktable-cell等)。

但是,它需要javascript,所以如果你正在寻找一个只用css的解决方案,那么这对你来说不是解决方案。

注意:这会覆盖内联样式,但不会在CSS中设置样式


不,这通常是不可能的。 一旦某个CSS(或HTML)代码为某个元素上的某个属性设置了值,就无法撤消该属性并告诉浏览器使用其默认值。

当然可以将属性设置为您希望为默认值的值。 如果您检查HTML5 CR的渲染部分,这可能会相当广泛,主要反映了浏览器实际执行的操作。

不过,答案是“否”,因为浏览器可能有他们喜欢的任何默认值。 你应该分析什么是想要重置为默认值的原因; 原来的问题仍然可以解决。

链接地址: http://www.djcxy.com/p/13185.html

上一篇: Reset CSS display property to default value

下一篇: CSS3 Flexbox: display: box vs. flexbox vs. flex