javascript - 如何使用 JavaScript 从 HTML 获取样式属性?

标签 javascript html css browser copy-paste

我想使用 JavaScript 将所有应用的 CSS 规则应用到 DOM 节点。

我知道 getComputedStyle 存在,但它会返回所有样式,而不仅仅是从样式表应用的样式/内联样式/注入(inject) CSSOM 的样式。

我看到这项工作的唯一方法是在浏览器上复制 HTML,然后将其粘贴到一个 contenteditable 字段中。粘贴的 HTML 神奇地只包含节点上内联的相关样式和类名。我很想看看它是如何工作的。浏览器是否在复制期间为您内联应用的样式?如果是这样,它是如何做到的?

我想我可以试试类似的东西

const get_relevant_styles = function(el) {
  const vanilla = document.createElement(el.tagName)
  return diff_properties(getComputedStyle(vanilla), getComputedStyle(el))
}

但是对每个节点都这样做似乎非常昂贵。我猜浏览器会做一些更聪明的事情,也许是通过直接处理 CSSOM?任何见解表示赞赏:)

最佳答案

看来这可以用下面的库来解决!

http://www.brothercake.com/site/resources/scripts/cssutilities/

我不确定它是否解决了被 CORS 问题阻止的样式表,但它会计算 CSS 选择器特异性并为您覆盖!

关于javascript - 如何使用 JavaScript 从 HTML 获取样式属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58227926/

相关文章:

javascript - 为什么不应该使用延迟脚本修改 DOM?

javascript - 如何在 Angular js中相互绑定(bind)两个不同数组的值

html - 如何使自定义边框宽度在放大时不调整大小?

javascript - Bootstrap 选项卡不更改内容

php - 为内页添加第二个侧边栏

javascript - "Self Invoking Anonymous Functions"的用途

javascript - 出生日期搜索验证 angularjs

javascript - 删除父 HTML 元素中的 HTML 元素

html - 如何将段落文本与中间的图像对齐

javascript - 所需金额之间的转换