如何仅重置/删除特定元素或选择器的CSS样式
如何仅重置/删除特定元素或选择器的CSS样式
是否有可用的CSS规则,可以移除样式表中先前设置的特定元素的任何样式?
一个很好的使用示例可能是在移动优先的响应式网站中,因为在小屏幕视图中使用的特定元素的大部分样式需要在桌面视图中“重置”或移除。
一个能够实现这样效果的CSS规则可能是:
.element { all: none; }
使用示例:
/* mobile first */ .element { margin: 0 10; transform: translate3d(0, 0, 0); z-index: 50; display: block; etc.. etc.. } @media only screen and (min-width: 980px) { .element { all: none; } }
这样我们就可以快速移除或重新设置样式,而无需声明每个属性。
admin 更改状态以发布 2023年5月23日
all
属性可以实现这一点,它的工作原理如下:
CSS:
#someselector { all: initial; } #someselector * { all: unset }
SCSS:
#someselector { all: initial; * { all: unset; } }
- 适用于所有支持的主流浏览器,但不适用于 Internet Explorer,如果你仍需维护该浏览器。
CSS属性all
有一个关键词initial
,它将CSS属性设置为规范中定义的初始值。虽然IE和Opera Mini家族不支持all
关键词,但是这个关键词在大部分浏览器中有广泛的支持。
/* basic modern patch */ #reset-this-root { all: unset; }
或者
#reset-this-root { all: initial; }
由于IE的不支持可能会引起问题,以下是一些将某些CSS属性重置为其初始值的方法:
.reset-this { animation : none; animation-delay : 0; animation-direction : normal; animation-duration : 0; animation-fill-mode : none; animation-iteration-count : 1; animation-name : none; animation-play-state : running; animation-timing-function : ease; backface-visibility : visible; background : 0; background-attachment : scroll; background-clip : border-box; background-color : transparent; background-image : none; background-origin : padding-box; background-position : 0 0; background-position-x : 0; background-position-y : 0; background-repeat : repeat; background-size : auto auto; border : 0; border-style : none; border-width : medium; border-color : inherit; border-bottom : 0; border-bottom-color : inherit; border-bottom-left-radius : 0; border-bottom-right-radius : 0; border-bottom-style : none; border-bottom-width : medium; border-collapse : separate; border-image : none; border-left : 0; border-left-color : inherit; border-left-style : none; border-left-width : medium; border-radius : 0; border-right : 0; border-right-color : inherit; border-right-style : none; border-right-width : medium; border-spacing : 0; border-top : 0; border-top-color : inherit; border-top-left-radius : 0; border-top-right-radius : 0; border-top-style : none; border-top-width : medium; bottom : auto; box-shadow : none; box-sizing : content-box; caption-side : top; clear : none; clip : auto; color : inherit; columns : auto; column-count : auto; column-fill : balance; column-gap : normal; column-rule : medium none currentColor; column-rule-color : currentColor; column-rule-style : none; column-rule-width : none; column-span : 1; column-width : auto; content : normal; counter-increment : none; counter-reset : none; cursor : auto; direction : ltr; display : inline; empty-cells : show; float : none; font : normal; font-family : inherit; font-size : medium; font-style : normal; font-variant : normal; font-weight : normal; height : auto; hyphens : none; left : auto; letter-spacing : normal; line-height : normal; list-style : none; list-style-image : none; list-style-position : outside; list-style-type : disc; margin : 0; margin-bottom : 0; margin-left : 0; margin-right : 0; margin-top : 0; max-height : none; max-width : none; min-height : 0; min-width : 0; opacity : 1; orphans : 0; outline : 0; outline-color : invert; outline-style : none; outline-width : medium; overflow : visible; overflow-x : visible; overflow-y : visible; padding : 0; padding-bottom : 0; padding-left : 0; padding-right : 0; padding-top : 0; page-break-after : auto; page-break-before : auto; page-break-inside : auto; perspective : none; perspective-origin : 50% 50%; position : static; /* May need to alter quotes for different locales (e.g fr) */ quotes : '\201C' '\201D' '\2018' '\2019'; right : auto; tab-size : 8; table-layout : auto; text-align : inherit; text-align-last : auto; text-decoration : none; text-decoration-color : inherit; text-decoration-line : none; text-decoration-style : solid; text-indent : 0; text-shadow : none; text-transform : none; top : auto; transform : none; transform-style : flat; transition : none; transition-delay : 0s; transition-duration : 0s; transition-property : none; transition-timing-function : ease; unicode-bidi : normal; vertical-align : baseline; visibility : visible; white-space : normal; widows : 0; width : auto; word-spacing : normal; z-index : auto; /* basic modern patch */ all: initial; all: unset; }
所有这些都说了,我认为除非我们最终只有一个Web浏览器设置了"默认",否则CSS重置不是可行的事情。