如何克隆一个节点,主要是包含他的样式

node.cloneNode(true);

可以用这种方式克隆一个节点,但是会丢失样式
有能深克隆节点及其样式表的方法吗

阅读 3.7k
2 个回答

具体操作我不知道怎么搞,但是这事确实有人做到了,他们就是—— html2canvas的作者,html2canvas可以用来进行网页截屏,其原理大概就是获取所有节点的样式,然后在canvas上画出来。
可以研究下他们是怎么做到的。

==========================
突然想起这个方法[捂脸]:

window.getComputedStyle;

很长一段时间内,样式表给我的印象是一团浆糊。
然而最近略加研究了一下才发现,样式表是很有条理的。

你可以用JS获取样式表中的规则。
document.styleSheets就是当前页面所有的样式表。
任意一个表里又由若干规则组成,这些规则在document.styleSheets[idx].cssRules里。
cssRules里的每条规则都可以读取出CSS样式文本。比如当前页面的某一条CSSrule的样式文本可以这么获取:document.styleSheets[0].cssRules[0].cssText
输出值为:
"svg:not(:root).svg-inline--fa { overflow: visible; }"

可以搜索一下MDN文档相关部分。
当然如果远程的CSS表可能并不能直接获取。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏