动态加载CSS

导读:
  这里说的动态加载是指加载外部CSS文件和动态创建样式表元素,在这里我总结的方法可能不全,但是尽量希望能把自己在使用的过程当中用到的一些方法提供给大家。
   首先来说如何动态加载一个外部的CSS文件:(假设文件名为style.css)
  最没有技术含量的方法:
  document.write(" rel="stylesheet" type="text/css", href="style.css">");
  @import(style.css)
  这种方法只能用在外部CSS文件或style结点中,基本上不能算作是动态。在FF和IE中均可行。
  使用document.createStyleSheet()方法
  这个方法是IE only的,参数可以传递一个样式表中的值,如body{background: blue;}或者是一个外部CSS文件的URL,使用方法如document.createStyleSheet(style.css),此URL的地址相对于当前页面。
  动态创建link结点
  function LoadCss(cssUrl) {
  ? var link = document.createElement("link");
  ? link.rel = "stylesheet";
  ? link.type = "text/css";
  ? link.href = "cssUrl";
  ? document.getElementsByTagName("body").item(0).appednChild(link);
  }
  这个方法在FF和IE中均可以使用,当然同样的思路还可以来创建style结点,然后使用XMLHttpRequest方法来加载cssURL中的内容,并把创建的style结点的innerHTML设置成XMLHttpRequest的responseText,但由于我认为这是最不经济、最不合理的一种方法,所以在这也就不讲了。
  更新当前某个link结点
  思路同上,但是这种作法是替换掉一个已有的link标签,可以用于更换网站的Theme,基本代码如下:
  function ChangeTheme(cssUrl) {
  ? var theme = document.getElementByName("theme"); //假设存在id为theme的结点
  ? theme.href = cssUrl;
  }
  这种方法我测试过,在FF和IE中均可行。
   动态创建样式元素
  如果我想在网页上增加一个如下的CSS元素,应该怎么做呢?
  .focus {
  ? color: red;
  ? font-style: bold;
  }
  当然,我可以创建一个style结点,然后把上面这段内容放到innerHTML中,那有没有别的办法呢?到目前为止,我还不知道除了上面那个方法以处一个在FF和IE中均可行的方法。不过在IE中我们可以这样做:
  var sheet = document.createStyleSheet();
  sheet.addRule(".focus", "color: red; font-style: bold;");
  文章中如有不对的地方,欢迎大家给我指正。


本文转自
http://bbiao.spaces.live.com/blog/cns!c201294984baf810!602.entry
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值