javascript - 忽略/覆盖周围/继承的 CSS

标签 javascript html css iframe

我有这个调用来将 HTML/CSS 添加到现有页面:

let div = document.createElement('div');
div.style.zIndex = 9999999;
div.innerHTML = str;  // some pre-defined HTML string
document.body.insertBefore(div, document.body.firstChild);

我正在创建一个可以帮助开发人员的 Chrome 扩展程序。发生的事情是上面的 HTML 从开发者页面继承了现有的 CSS。我希望上述 HTML 的样式独立于开发人员页面上的 CSS/样式。

有没有办法忽略页面上所有现有的 CSS?我想基本上创建一个“CSS 沙箱”。

我认为创建这样一个沙箱的一种方法是 iframe,但我正在寻找一种更简单的方法来做到这一点。

最佳答案

class 添加到要重置的元素..然后将 all:unset 应用于该类

The all CSS shorthand property sets all of an element's properties (apart from unicode-bidi and direction) to their initial or inherited values, or to the values specified in another style sheet origin.


...全部:未设置

指定如果默认继承,则所有元素的属性应更改为其继承值,否则更改为初始值。(它也会忽略所有用户代理样式.)

堆栈片段

let p = document.createElement('p');
p.style.color = "red";
p.innerHTML = "Hello"; // some pre-defined HTML string
p.classList.add("reset");
document.body.insertBefore(p, document.body.firstChild);
p {
  background: black;
}

.reset {
  all: unset;
}

关于javascript - 忽略/覆盖周围/继承的 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48604800/

相关文章:

javascript - 如何使 DIV 扩展以适应绝对定位的一个元素和固定定位的另一个元素

css - 如何隐藏父div,保持内部div可见?

css - 散列后如何定位 CSS 模块类?

angularjs - 如何使悬停时特定的 div 应该隐藏,而另一个 div 应该以 Angular 显示?

javascript - 容器内的行在顶部被遮挡

c# - 仅将一个字符串从 $.ajax 发送到 C#

javascript - jQuery/Javascript 函数清除表单的所有字段

javascript - 在 node.js 中安装 Socket.io 包

javascript - 这是在 JS 中的依赖函数中使用 Try-Catch 和 async-wait 的正确方法吗

javascript - 如何提高视差滚动脚本的性能?