动态添加css的三种方法(示例很清楚)

转自:http://www.cnblogs.com/niuniu/archive/2010/05/03/1726303.html

 好久没写文章了今天关于动态添加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');
复制代码

 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,这里是一个完整的 layui 分页的示例: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Layui分页示例</title> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <div id="demo" style="margin: 20px;"></div> <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script> layui.use(['laypage', 'layer'], function(){ var laypage = layui.laypage ,layer = layui.layer; // 模拟数据 var data = [ {'name': '张三', 'age': 18}, {'name': '李四', 'age': 20}, {'name': '王五', 'age': 22}, {'name': '赵六', 'age': 25}, {'name': '钱七', 'age': 28}, {'name': '孙八', 'age': 30}, {'name': '周九', 'age': 32}, {'name': '吴十', 'age': 35}, {'name': '郑十一', 'age': 38}, {'name': '王十二', 'age': 40} ]; // 执行一个laypage实例 laypage.render({ elem: 'demo' ,count: data.length ,limit: 3 ,limits: [3, 5, 10] ,layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'] ,jump: function(obj){ // 渲染数据列表 var html = ''; for(var i = (obj.curr - 1) * obj.limit; i < Math.min(obj.curr * obj.limit, data.length); i++){ html += '<li>'+ data[i].name +' - 年龄:'+ data[i].age +'</li>'; } $('#demo').html(html); // 使用setTimeout模拟异步请求数据 setTimeout(function(){ layer.msg('当前页:'+ obj.curr +', 每页显示:'+ obj.limit +', 总页数:'+ obj.pages); }, 200); } }); }); </script> </body> </html> ``` 这个示例使用了layui和jQuery库,以及模拟的数据,你可以根据自己的需求进行修改。在页面上创建了一个id为`demo`的元素,并在脚本中使用`laypage.render`方法初始化分页组件。 其中的`data`数组是模拟的数据,你可以将它替换为你实际的数据。`jump`回调函数会在分页切换时触发,你可以在回调函数中根据当前页码和每页显示数量从数据中获取对应的数据进行渲染。 另外,`layout`选项可以自定义分页组件的布局,比如添加上一页、下一页等按钮。这个示例中的布局包含了页码、上一页、下一页、每页显示数量、刷新和跳页等元素。 希望这个示例对你有帮助!如果有什么不清楚的地方,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值