javascript – 如何将所有用户提供的样式从一个对象复制到另一个对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何将所有用户提供的样式从一个对象复制到另一个对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1550字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何将所有用户提供的样式从一个对象复制到另一个对象](/upload/InfoBanner/zyjiaocheng/767/2108bff7fcf7462abebebcbcfbbeb38e.jpg)
有人问here如何将CSS样式从一个对象复制到另一个对象.普遍接受的答案是:
var p = document.getElementById("your_p_id");
var div = document.createElement("div");
div.innerHTML = "your div content";
div.style.cssText = document.defaultView.getComputedStyle(p, "").cssText;
但是,我的情况有点不同.我有一个脚本创建一个span来设定一个select标签,然后隐藏选择.这样可以更轻松地进行CSS样式设置,因为相对于坚定的选择标记,我可以更轻松地设置跨度样式.
当我使用cssText时,要将从select中应用的任何样式复制到span,它最终看起来像一个select标签.由于所有内置样式也应用于跨度而不仅仅是用户输入,因此我必须通过数十个覆盖所有这些css属性,这首先打算使用span标记.
有没有办法只复制用户提供的样式而不是用于样式元素的整个样式表?
到目前为止,我已经能够通过将类和id从select转移到span来传输应用的样式,但我的挑战是将样式直接应用于select标签(即在样式/样式表中,它显示为:select {blah: bloh;})
解决方法:
尝试这样的事情:
function ApplyStyles(select, span) {
var select = document.querySelector(select);
var span = document.querySelector(span);
var sheets = document.styleSheets;
for(var i = 0; i < sheets.length; i++) {
var rules = sheets[i].cssRules || sheets[i].rules;
for(var r = 0; r < rules.length; r++) {
var rule = rules[r];
var selectorText = rule.selectorText;
if(document.querySelector(selectorText) == select){
for(var l = 0; l < rule.style.length; l++){
span.style[rule.style[l]] = rule.style[rule.style[l]];
}
}
}
}
}
然后使用这样的函数:
ApplyStyles("#selection", "#span");
这是一个JSFiddle,例如:https://jsfiddle.net/rsLnaw56/2/
它的工作原理是它找到应用于select元素的所有外部样式并将其应用于span元素.
内容总结
以上是互联网集市为您收集整理的javascript – 如何将所有用户提供的样式从一个对象复制到另一个对象全部内容,希望文章能够帮你解决javascript – 如何将所有用户提供的样式从一个对象复制到另一个对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。