将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的链接。
这很好,因为您不必担心不同类型的显示器会回复到( block
, inline
, inline-block
, table-cell
等)。
但是,它需要javascript,所以如果你正在寻找一个只用css的解决方案,那么这对你来说不是解决方案。
注意:这会覆盖内联样式,但不会在CSS中设置样式
不,这通常是不可能的。 一旦某个CSS(或HTML)代码为某个元素上的某个属性设置了值,就无法撤消该属性并告诉浏览器使用其默认值。
当然可以将属性设置为您希望为默认值的值。 如果您检查HTML5 CR的渲染部分,这可能会相当广泛,主要反映了浏览器实际执行的操作。
不过,答案是“否”,因为浏览器可能有他们喜欢的任何默认值。 你应该分析什么是想要重置为默认值的原因; 原来的问题仍然可以解决。
链接地址: http://www.djcxy.com/p/13185.html