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

 更新时间:2011年10月23日 23:44:14   作者:  
这是一个实验用的玩意,它可以克隆指定元素的最终样式,并包装成一个css类,它还可以证明Oprea 11.10 是个混球
复制代码 代码如下:

/**
* 克隆元素样式
* @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需再刷新一下页面才能执行]

相关文章

  • JavaScript计算字符串中每个字符出现次数的小例子

    JavaScript计算字符串中每个字符出现次数的小例子

    这篇文章介绍了在JS中计算字符串中每个字符出现的次数,有需要的朋友可以参考一下
    2013-07-07
  • JavaScript中的闭包原理分析

    JavaScript中的闭包原理分析

    一看到闭包这个词,我就会想起线性代数中的封闭空间,也就是说,这个空间中的所有向量,无论经过何种运算,最终结果还是会落在该空间中。那么JavaScript中会不会也是类似的概念呢?
    2010-03-03
  • WebGL学习教程之Three.js学习笔记(第一篇)

    WebGL学习教程之Three.js学习笔记(第一篇)

    Three.js是一个js的开源框架,它把webgl的所有东西都封装好了,我们不再需要去了解webgl那些比较麻烦的细节,直接在此框架上进行开发,既方便,又快捷,而且很容易就能学习,感兴趣的朋友跟随小编一起看看吧
    2019-04-04
  • jQuery Mobile动态刷新页面样式的实现方法

    jQuery Mobile动态刷新页面样式的实现方法

    下面小编就为大家带来一篇jQuery Mobile动态刷新页面样式的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 原生js实现轮播图

    原生js实现轮播图

    这篇文章主要为大家详细介绍了原生js实现轮播图的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 简单实现js页面切换功能

    简单实现js页面切换功能

    这篇文章主要为大家详细介绍了如何实现js页面切换功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • JS自调用匿名函数具体实现

    JS自调用匿名函数具体实现

    定义一个函数用做临时的命名空间,在这个命名空间内定义的变量都不会污染到全局命名空间,需要的朋友可以参考下
    2014-02-02
  • js Html结构转字符串形式显示代码

    js Html结构转字符串形式显示代码

    js Html结构转字符串形式显示代码,需要的朋友可以参考下。
    2011-11-11
  • 微信小程序开发常见问题及解决方案

    微信小程序开发常见问题及解决方案

    这篇文章主要介绍了微信小程序开发常见问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • JavaScript实现左右滚动电影画布

    JavaScript实现左右滚动电影画布

    这篇文章主要为大家详细介绍了JavaScript实现左右滚动电影画布,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论