node.cloneNode(true);
可以用这种方式克隆一个节点,但是会丢失样式
有能深克隆节点及其样式表的方法吗
很长一段时间内,样式表给我的印象是一团浆糊。
然而最近略加研究了一下才发现,样式表是很有条理的。
你可以用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表可能并不能直接获取。
8 回答6k 阅读✓ 已解决
9 回答9.4k 阅读
6 回答5k 阅读✓ 已解决
5 回答3.6k 阅读✓ 已解决
5 回答8k 阅读✓ 已解决
3 回答10.5k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
具体操作我不知道怎么搞,但是这事确实有人做到了,他们就是—— html2canvas的作者,
html2canvas
可以用来进行网页截屏,其原理大概就是获取所有节点的样式,然后在canvas
上画出来。可以研究下他们是怎么做到的。
==========================
突然想起这个方法[捂脸]: