LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 637|回复: 0

重置样式属性

[复制链接]
发表于 2024-2-1 22:09:53 | 显示全部楼层 |阅读模式
有时我们想要分配一个样式属性,稍后移除它。

例如,为了隐藏一个元素,我们可以设置 elem.style.display = "none"。

然后,稍后我们可能想要移除 style.display,就像它没有被设置一样。这里不应该使用 delete elem.style.display,而应该使用 elem.style.display = "" 将其赋值为空。

// 如果我们运行这段代码,<body> 将会闪烁
document.body.style.display = "none"; // 隐藏

setTimeout(() => document.body.style.display = "", 1000); // 恢复正常
如果我们将 style.display 设置为空字符串,那么浏览器通常会应用 CSS 类以及内建样式,就好像根本没有这样的 style.display 属性一样。

还有一个特殊的方法 elem.style.removeProperty('style property')。所以,我们可以像这样删除一个属性:

document.body.style.background = 'red'; //将 background 设置为红色

setTimeout(() => document.body.style.removeProperty('background'), 1000); // 1 秒后移除 background
用 style.cssText 进行完全的重写
通常,我们使用 style.* 来对各个样式属性进行赋值。我们不能像这样的 div.style="color: red; width: 100px" 设置完整的属性,因为 div.style 是一个对象,并且它是只读的。

想要以字符串的形式设置完整的样式,可以使用特殊属性 style.cssText:

<div id="div">Button</div>

<script>
  // 我们可以在这里设置特殊的样式标记,例如 "important"
  div.style.cssText=`color: red !important;
    background-color: yellow;
    width: 100px;
    text-align: center;
  `;

  alert(div.style.cssText);
</script>
我们很少使用这个属性,因为这样的赋值会删除所有现有样式:它不是进行添加,而是替换它们。有时可能会删除所需的内容。但是,当我们知道我们不会删除现有样式时,可以安全地将其用于新元素。

可以通过设置一个特性(attribute)来实现同样的效果:div.setAttribute('style', 'color: red...')。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表