如何使用javascript删除css属性?

IT技术 javascript css
2021-02-27 05:32:46

是否可以使用 JavaScript 删除元素的 CSS 属性?例如,我有div.style.zoom = 1.2,现在我想通过 JavaScript 删除缩放属性?

6个回答

您有两个选择:

选项1:

您可以使用removeProperty 方法它将从元素中删除样式。

el.style.removeProperty('zoom');

选项 2:

您可以将其设置为默认值:

el.style.zoom = "";

有效缩放现在将遵循样式表中设置的定义(通过链接和样式标签)。所以这个语法只会修改这个元素的本地样式。

@OliverJosephAsh 是的,它已记录在案,请参阅stackoverflow.com/a/7901886/700206下面的这个答案
2021-04-15 05:32:46
...以及用户 CSS 和浏览器默认样式。
2021-04-17 05:32:46
我理解 OP 的意思是他们想让它看起来好像他们没有设置元素的 style 属性,这正是你提供的。我尝试使用 el.style.removeProperty('zoom'); (或“填充”,实际上,就我而言)似乎在 IE 中做同样的事情,并被其他浏览器忽略。出于某种原因,我惊讶地发现将其设置为空白字符串具有相同的效果,并且似乎适用于所有(最新版本)浏览器。
2021-04-23 05:32:46
这种行为是否在标准中的任何地方指定?我找不到:-(
2021-05-01 05:32:46

removeProperty将从元素中删除样式。

例子:

div.style.removeProperty('缩放');

MDN 文档页面:
CSSStyleDeclaration.removeProperty

这非常好,因为类中的样式将被保留。
2021-04-19 05:32:46
div.style.removeProperty('zoom');

您可以使用 styleSheets 对象:

document.styleSheets[0].cssRules[0].style.removeProperty("zoom");

警告 #1:您必须知道样式表的索引和规则的索引。

警告 #2:浏览器对这个对象的实现不一致;在一种情况下有效的方法可能在其他情况下无效。

这看起来真的很脆弱。每当您的指数发生变化时,它不会中断吗?
2021-04-19 05:32:46
我的 Chrome 26 没有CSSStyleRule.prototype.removeProperty=( 实际上CSSStyleRule没有任何方法。=(
2021-04-20 05:32:46
CSSStyleSheet.prototype.removeRule 到救援。
2021-04-21 05:32:46
是的。这正是警告#1所说的。
2021-04-26 05:32:46
@Rudie,不是CSSStyleSheet.prototype.deleteRule吗?
2021-05-03 05:32:46
element.style.height = null;

输出:

<div style="height:100px;"> 
// results: 
<div style="">
似乎将样式设置为 null 在 IE11 中不起作用。
2021-04-17 05:32:46
为什么有人应该关心IE浏览器?我故意忽略它们已经很多年了。
2021-04-25 05:32:46
@T.Todua 是否有必要为浏览器名称使用内联代码块?但是,是的,我完全同意 - 自 2016 年以来,Microsoft 已停止支持该浏览器。
2021-04-26 05:32:46