栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

导出DOM元素的CSS

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

导出DOM元素的CSS

这是一种

exportStyles()
方法的代码,该方法应返回一个CSS字符串,包括给定元素的所有内联和外部样式,默认值 除外 (这是主要困难)。

例如:

console.log(someElement.exportStyles());

由于您使用的是Chrome,因此我无需理会它与IE兼容。实际上,只需要浏览器支持该

getComputedStyle(element)
方法即可。

Element.prototype.exportStyles = (function () {    // Mapping between tag names and css default values lookup tables. This allows to exclude default values in the result.    var defaultStylesByTagName = {};    // Styles inherited from style sheets will not be rendered for elements with these tag names    var noStyleTags = {"base":true,"HEAD":true,"HTML":true,"meta":true,"NOframe":true,"NOscript":true,"PARAM":true,"script":true,"STYLE":true,"TITLE":true};    // This list determines which css default values lookup tables are precomputed at load time    // Lookup tables for other tag names will be automatically built at runtime if needed    var tagNames = ["A","ABBR","ADDRESS","AREA","ARTICLE","ASIDE","AUDIO","B","base","BDI","BDO","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","CENTER","CITE","CODE","COL","COLGROUP","COMMAND","DATALIST","DD","DEL","DETAILS","DFN","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","HTML","I","Iframe","IMG","INPUT","INS","KBD","KEYGEN","LABEL","LEGEND","LI","link","MAP","MARK","MATH","MENU","meta","METER","NAV","NOBR","NOscript","OBJECT","OL","OPTION","OPTGROUP","OUTPUT","P","PARAM","PRE","PROGRESS","Q","RP","RT","RUBY","S","SAMP","script","SECTION","SELECT","SMALL","SOURCE","SPAN","STRONG","STYLE","SUB","SUMMARY","SUP","SVG","TABLE","TBODY","TD","textarea","TFOOT","TH","THEAD","TIME","TITLE","TR","TRACK","U","UL","VAR","VIDEO","WBR"];    // Precompute the lookup tables.    for (var i = 0; i < tagNames.length; i++) {        if(!noStyleTags[tagNames[i]]) { defaultStylesByTagName[tagNames[i]] = computeDefaultStyleByTagName(tagNames[i]);        }    }    function computeDefaultStyleByTagName(tagName) {        var defaultStyle = {};        var element = document.body.appendChild(document.createElement(tagName));        var computedStyle = getComputedStyle(element);        for (var i = 0; i < computedStyle.length; i++) { defaultStyle[computedStyle[i]] = computedStyle[computedStyle[i]];        }        document.body.removeChild(element);         return defaultStyle;    }    function getDefaultStyleByTagName(tagName) {        tagName = tagName.toUpperCase();        if (!defaultStylesByTagName[tagName]) { defaultStylesByTagName[tagName] = computeDefaultStyleByTagName(tagName);        }        return defaultStylesByTagName[tagName];    }    return function exportStyles() {        if (this.nodeType !== Node.ELEMENT_NODE) { throw new TypeError("The exportStyles method only works on elements, not on " + this.nodeType + " nodes.");        }        if (noStyleTags[this.tagName]) { throw new TypeError("The exportStyles method does not work on " + this.tagName + " elements.");        }        var styles = {};        var computedStyle = getComputedStyle(this);        var defaultStyle = getDefaultStyleByTagName(this.tagName);        for (var i = 0; i < computedStyle.length; i++) { var cssPropName = computedStyle[i]; if (computedStyle[cssPropName] !== defaultStyle[cssPropName]) {     styles[cssPropName] = computedStyle[cssPropName]; }        }        var a = ["{"];        for(var i in styles) { a[a.length] = i + ": " + styles[i] + ";";        }        a[a.length] = "}"        return a.join("rn");    }})();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465152.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号