是否可以用默认值覆盖显示属性?例如,如果我在一种样式中将其设置为"无",并希望在不同的样式中使用其默认设置来覆盖它.

或者,找出该元素的缺省值,然后将其设置为缺省值是唯一的方法吗?我不想知道元素是否通常是挡路,内联或任何.

推荐答案

浏览器的默认样式在其用户代理样式表中定义,您可以找到here个源代码.不幸的是,Cascading and Inheritance level 3 spec似乎没有提出将样式属性重置为其浏览器默认值的方法.然而,有计划在Cascading and Inheritance level 4中重新引入一个关键字-工作组只是还没有确定这个关键字的名称(链接目前显示为revert,但还不是最终的).有关对revert的浏览器支持的信息可以在caniuse.com上找到.

虽然级别3规范确实引入了initial keyword,但是将属性设置为其initial value会将其重置为默认值as defined by CSS,not as defined by the browser.初始值displayinline;这是指定的here.关键字initial是指该值,而不是浏览器默认值.规范本身在第all property条下做了这样的注解:

例如,如果作者在元素上指定all: initial,它将挡路所有继承并重置所有属性,就像级联的作者、用户或用户代理级别中没有出现任何规则一样.

这对于包含在页面中的"小部件"的根元素很有用,因为它不希望继承外部页面的样式.然而,请注意,应用于该元素的任何"默认"样式(例如,来自块元素(例如<div>)上UA样式表的display: block)也将被吹走.

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

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

(以上选项的另一种 Select 是div.foo:not(.bar) { display: inline-block; },但这需要修改原始 Select 器,而不是覆盖.)

Css相关问答推荐

不了解重复-线性-渐变 colored颜色 停止

如何使用在另一个层定义块中定义的sass层作用域变量

使用间距时奇怪的MUI网格行为

指定from_max和to_min值时隐藏Shiny sliderTextInput下的行

MUI Textfield-悬停时输入标签 colored颜色

在文本之前添加了额外的空间-Angular 树视图CSS

如何使背景出现在具有自己背景 colored颜色 的子元素上

在 CSS 中跨列对齐文本基线

带插值的 Sass 数学函数

同一元素的文本和背景之间的图层

如何禁用亚像素渲染或强制浏览器将属性舍入到最近的像素?

带填充的水平边框

如何仅包装左侧内容

未知规则 @propertycss(unknownAtRules)

如何在 CSS Grid 布局中指定行高?

滚动到该 div 后如何使 div 固定?

Bootstrap 4 img-circle 类似乎不存在

如何保持标题静态,滚动时始终位于顶部?

Angular 动画的目的是什么?

为什么是垂直对齐:文本顶部;不能在 CSS 中工作