有没有一种方法可以使用JavaScript从特定选择器中删除所有CSS样式,而不将选择器本身从元素中删除?
问题在于,我想向元素添加自己的类来处理样式,但该元素是由WordPress插件创建的,并且已经有覆盖我的类的类。 我无法删除原始类,因为它们还用于Javascript。
通常情况下,我会放弃并在我的类中添加
基本上,我有以下内容:
问题在于,我想向元素添加自己的类来处理样式,但该元素是由WordPress插件创建的,并且已经有覆盖我的类的类。 我无法删除原始类,因为它们还用于Javascript。
通常情况下,我会放弃并在我的类中添加
! important
来处理问题,如果没有其他方法,我仍然可以这样做。 但是,原始类实际上定义了几乎所有内容,包括多个伪状态,因此我必须列出从color:
到border-bottom-right-radius:
的所有内容,并在其后添加!important
(包括:focus
和:hover
等所有内容)以覆盖所有原始样式。基本上,我有以下内容:
<button class="original-class-1 original-class-2">Button</button>
<style>
.my-styles {
color: #fafafa;
background-color: #090909;
border: 1px solid;
}
.original-class-1 {
color: #000000;
background-color: #ffffff;
border-width: 1px;
border-style: solid;
...
...
etc-with-everything-but-the-kitchen-sink: killme;
}
.original-class-2 {
padding-top: 5px;
padding-right: 5px;
padding-bottom: 5px;
padding-left: 5px;
...
...
etc-with-even-more-stuff: why;
}
</style>
and I want
<button class="original-class-1 original-class-2 my-styles">Button</button>
<style>
.my-styles {
color: #fafafa;
background-color: #090909;
border: 1px solid;
}
.original-class-1 {
}
.original-class-2 {
}
</style>
目前我已经开始做了类似于这样的东西:
const buttons = document.querySelectorAll('.original-class-1');
for (const button of buttons ) {
button.style.removeAllProperties(); // Does something like this exist?
button.classList.add('my-styles');
}
明确一下,原始类别是从一个外部样式表中增加样式的,我只是将它们放在上面的<style>
标签中以便说明。