爱奇思

学习就是——从糊涂中慢慢走向清醒,然后再从清醒中慢慢走向糊涂,所以说我说它是一个O,只是圆的半径慢慢的扩大罢了!
随笔 - 60, 文章 - 8, 评论 - 128, 阅读 - 12万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

动态添加css

Posted on   牛牛博客  阅读(10727)  评论(0编辑  收藏  举报

      好久没写文章了今天关于动态添加css文件写一点想法

  1.       第一种添加方式:
    document.getElementById("elementId").style.background="#ff0000";

    这种方式采用内联是插入css.优先级高。容易引起页面回流性能不好   也不能进行多个样式的添加

  2. 第二种方式:

     document.getElementsByTagName("a")[0].style.cssText = "background:#ff0000;border:1px #dfdfdf solid;";

     

     

     这种方式 相比第一种优点是可以一次进行多个样式的设定,但仍是内联式,引起页面回流,多次插入引起性能上的消耗。
  3. 第三种是:直接在style标签中写,这种方法要考虑不同浏览器的兼容性问题。(声明:下面代码引用”司徒正美“的一段代码)
    复制代码
            var addSheet = function () {
                var doc, cssCode;
                if (arguments.length == 1) {
                    doc = document;
                    cssCode = arguments[0]
                
    } else if (arguments.length == 2) {
                    doc = arguments[0];
                    cssCode = arguments[1];
                
    } else {
                    alert("addSheet函数最多接受两个参数!");
                
    }
                if (! +"\v1") 
    {//增加自动转换透明度功能,用户只需输入W3C的透明样式,它会自动转换成IE的透明滤镜  
                    var t = cssCode.match(/opacity
    :(\d?\.\d+);/);
                    if (t != null) {
                        cssCode = cssCode.replace(t[0], "filter
    :alpha(opacity=" + parseFloat(t[1]) * 100 + ")")
                    
    }
                }
                cssCode = cssCode + "\n"; //增加末尾的换行符,方便在firebug下的查看。  
                var headElement = doc.getElementsByTagName("head")[0];
                var styleElements = headElement.getElementsByTagName("style");
                if (styleElements.length == 0) 
    {//如果不存在style元素则创建  
                    if (doc.createStyleSheet) {    //ie  
                        doc.createStyleSheet();
                    
    } else {
                        var tempStyleElement = doc.createElement('style'); //w3c  
                        tempStyleElement.setAttribute("type", "text/css");
                        headElement.appendChild(tempStyleElement);
                    
    }
                }
                var styleElement = styleElements[0];
                var media = styleElement.getAttribute("media");
                if (media != null && !/screen/.test(media.toLowerCase())) 
    {
                    styleElement.setAttribute("media", "screen");
                
    }
                if (styleElement.styleSheet) 
    {    //ie  
                    styleElement.styleSheet.cssText += cssCode;
                
    } else if (doc.getBoxObjectFor) {
                    styleElement.innerHTML += cssCode; //火狐支持直接innerHTML添加样式表字串  
                
    } else {
                    styleElement.appendChild(doc.createTextNode(cssCode))
                
    }
            }
    复制代码

     

      

        4.动态加载css文件,这个就简单了

        

 

复制代码
            function addStyle(stylePath) {
                var container = document.getElementsByTagName("head")[0];
                var addStyle = document.createElement("link");
                addStyle.rel = "stylesheet";
                addStyle.type = "text/css";
                addStyle.media = "screen";
                addStyle.href = stylePath;
                container.appendChild(addStyle);
            
}
            addStyle('css/add.css');
复制代码

 

          

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示