如何动态地在css文件中添加css?

时间:2014-06-26 05:03:13

标签: javascript jquery html css css3

我已经为网格写了一个js。 gird有一个功能,我在这里输入每个列的宽度。

mygrid._struct = [{ fieldType : "deltaHedgeType", defaultWidth : 80},
           { fieldType : "quoteccy", defaultWidth : 40 }]

所以网格html就像这样生成

<table id="mygrid">
  <tr>
    <td class="deltaHedgeType"></td>
    <td class="quoteccy"></td>
  </tr>
  <tr>
    <td class="deltaHedgeType"></td>
    <td class="quoteccy"></td>
  </tr>
</table>

我希望这个css附加在style.css

#mygrid .deltaHedgeType{
    width:40;
}
#mygrid .quoteccy{
    width:80;
}

我想到的是将此css添加到标记中的标题中。 coz IE浏览器有计数限制,也增加了页面的html大小。那么如何在style.css中附加这个css。

3 个答案:

答案 0 :(得分:1)

您必须解析mygrid._struct以获取fieldType和defaultWidth,然后为每个元素使用以下代码

添加css的最终javascript将是

var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = '#mygrid.'+fieldType+'{ width:'+defaultWidth+'; }';
document.getElementsByTagName('head')[0].appendChild(style);

对于ie限制要么在已使用的样式之一上使用id并使用jquery引用它,要么创建一个新的并将所有ur样式附加到此样式。

           $style = $('#MyGridStyle');
          if (!$style[0]) {
            $style = $("<style id='MyGridStyle' type='text/css' rel='stylesheet' />").appendTo($("head"));
          }

现在使用此$ style添加到此

请参阅IE 8 and 7 bug when dynamically adding a stylesheet了解其他解决方案

答案 1 :(得分:0)

你可以直接把CSS写到html页面的头部 - 我在这里找到了一个很好的例子:Add CSS to <head> with JavaScript?

答案 2 :(得分:0)

在CSS文件中,您可以使用@import url("/css/filename.css")导入一个新的css文件,该文件会动态刷新并用于某些特殊用途。