隐藏

jQuery动态加载css文件说明

发布:2015/6/16 3:16:18作者:管理员 来源:本站 浏览次数:1514

有时我们可能会需要使用 jQuery 来加载一个外部的 css 文件,如在切换页面布局时。思路是创建一个 link 元素,并将它添加到 标记中即可,下边首先看看怎么使用 jQuery 来实现。

下边是我喜欢的写法:

 代码如下 复制代码
$("<link>")
    .attr({ rel: "stylesheet",
        type: "text/css",
        href: "site.css"
    })
    .appendTo("head");

有些朋友可能会使用下边的写法,只是形式有些小差异(append appendTo),原理还是一样的。

 代码如下 复制代码

$("head").append("<link>");
css = $("head").children(":last");
css.attr({
    rel: "stylesheet",
    type: "text/css",
    href: "/Content/Site.css"
});

最后,有的朋友可能希望直接在 javascript 中使用,方法如下:

 代码如下 复制代码

function addCSS() {
    var link = document.createElement('link');
    link.type = 'text/css';
    link.rel = 'stylesheet';
    link.href = '/Content/Site.css';
    document.getElementsByTagName("head")[0].appendChild(link);
}

如果是在 web 交互时,我们可以使用上述的方法通过 jQuery 或者 javascript 来引入一个 css 文件,否则还是建议使用原始的方法。

下面我还介绍一个可加载js,css的实例

 

 代码如下 复制代码

$.extend({
     includePath: '',
     include: function(file) {
        var files = typeof file == "string" ? [file]:file;
        for (var i = 0; i < files.length; i++) {
            var name = files[i].replace(/^s|s$/g, "");
            var att = name.split('.');
            var ext = att[att.length - 1].toLowerCase();
            var isCSS = ext == "css";
            var tag = isCSS ? "link" : "script";
            var attr = isCSS ? " type='text/css' rel='stylesheet' " : " language='javascript' type='text/javascript' ";
            var link = (isCSS ? "href" : "src") + "='" + $.includePath + name + "'";
            if ($(tag + "[" + link + "]").length == 0) document.write("<" + tag + attr + link + "></" + tag + ">");
        }
   }
});

//使用方法
$.includePath = 'http://hi.xxx/javascript/';
$.include(['json2.js', 'jquery.tree.js', 'jquery.tree.css']);

一个完整的实例

index.html

 代码如下 复制代码

<!-- Created by Barrett at RRPowered.com -->
<!-- File name index.html -->
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax
/libs/jquery/1.4.4/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="default.css">
<title>A simple jQuery image slide</title>
<script type="text/javascript">
$(function(){
$(".theme").click(function(){
var theme=$(this).attr("rel");
$("link").attr("href",$(this).attr('rel'));
$("head").append("<link>");
});
});
</script>
</head>
<body>
<div class="theme" rel="blue.css">Blue</div>
<div class="theme" rel="orange.css">Orange</div>
<div class="theme" rel="yellow.css">Yellow</div>
<div class="theme" rel="default.css">Default</div>
<div class="container">
  <div class="menu">Tab1 Tab2 Tab3 Tab4 Tab5</div>
  <div class="inner">
  Lorem ipsum dolor sit amet
  </div>
  <div class="footer">copyright yoursite 2011</div>
</div>
</body>
</html>

default.css

body{
background-color:#ffffff;
font-family:"arial";
}
 
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
 
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
 
.inner{
padding:20px;
border:solid #333333 1px;
}
 
.menu{
background-color:#f2f2f2;
padding:10px;
font-weight:bold;
}
 
.footer{
background-color:#f9f9f9;
padding:5px;
}

blue.css

body{
background-color:#2E9AFE;
font-family:"arial";
}
 
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
 
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
 
.inner{
padding:20px;
border:solid #333333 1px;
background-color:#58ACFA;
color:#ffffff;
}
 
.menu{
background-color:#f2f2f2;
padding:10px;
font-weight:bold;
}
 
.footer{
background-color:#f9f9f9;
padding:5px;
}

yellow.css

body{
background-color:#F7FE2E;
font-family:"arial";
}
 
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
 
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
 
.inner{
padding:20px;
border:solid #333333 1px;
background-color:#f6f6f6;
}
 
.menu{
background-color:#F2F5A9;
padding:10px;
font-weight:bold;
}
 
.footer{
background-color:#F2F5A9;
padding:5px;
}

orange.css

body{
background-color:#FE9A2E;
font-family:"arial";
}
 
.theme{
margin:10px;
width:70px;
padding:5px;
text-align:center;
background-color:#BEF781;
border:solid #333333 1px;
color:#444444;
font-weight:bold;
cursor:pointer;
}
 
.container{
margin-left:auto;
margin-right:auto;
width:700px;
}
 
.inner{
padding:20px;
background-color:#F7BE81;
color:#404040;
}
 
.menu{
background-color:#ffffff;
padding:10px;
font-weight:bold;
color:#FFBF26;
}
 
.footer{
background-color:#ffffff;
padding:5px;
color:#FFBF26;
}