javascript克隆元素样式的实现代码


复制代码 代码如下:

/**
* 克隆元素样式
* @param {HTMLElement} 被克隆的元素
* @param {Boolean} 是否启用缓存(默认true)
* @return {String} css类名
*/
var cloneStyle = (function (doc) {
var rstyle = /^(number|string)$/,
cloneName = '${cloneName}',
sData = {},
addHeadStyle = function (content) {
var style = sData[doc];
if (!style) {
style = sData[doc] = doc.createElement('style');
doc.getElementsByTagName('head')[0].appendChild(style);
};
style.styleSheet && (style.styleSheet.cssText += content) || style.appendChild(doc.createTextNode(content));
},
getStyle = 'getComputedStyle' in window ? function (elem, name) {
return getComputedStyle(elem, null)[name];
} : function (elem, name) {
return elem.currentStyle[name];
};
return function (source, cache) {
if (!cache && source[cloneName]) return source[cloneName];
var className, name,
cssText = [],
sStyle = source.style;
for (name in sStyle) {
val = getStyle(source, name);
if (val !== '' && rstyle.test(typeof val)) {
name = name.replace(/([A-Z])/g,"-$1").toLowerCase();
cssText.push(name);
cssText.push(':');
cssText.push(val);
cssText.push(';');
};
};
cssText = cssText.join('');
source[cloneName] = className = 'clone' + (new Date).getTime();
addHeadStyle('.' + className + '{' + cssText + '}');
return className;
};
}(document));

演示:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]



相关阅读:
开发WAP站点之---使用PC电脑浏览器访问WAP手机站点
盗版的Windows 7能否导致免费Windows 7的到来
php绝对路径与相对路径之间关系的的分析
js表数据排序 sort table data
网页字体该如何设置?
详解SQL Server中SSIS事件探查器的使用
如何设置Windows 7的虚拟内存大小
IE7.0浏览器上网技巧大汇总
MySQL宣布Cluster数据库基准测试结果
从父页面读取和操作iframe中内容方法
ASP.NET程序中常用代码汇总
栅格:灵活应变
ubuntu8.04 安装后要安装的包
用ASP打开远端MDB文件的方法
快速导航

Copyright © 2016 phpStudy |