您好,欢迎访问一九零五行业门户网

javascript克隆元素样式的实现代码_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));
演示:
clonestyle
其它类似信息

推荐信息