分享

(4)js调用样式

 红木牛 2015-03-07

样式分类:
有3种:

1、外部样式(external style sheet):如果很多网页需要用到同样的样式(Styles),将样式(Styles)写

在一个以.css为后缀的CSS文件里,然后在每个需要用到这些样式(Styles)的网页里引用这个CSS文

件。
2、内部样式(internal style sheet):是写在HTML的<head></head>里面的,内部样式只对所在的网页

有效。
3、内嵌样式(inline style):是写在Tag里面的,内嵌样式只对所有的Tag有效。


样式的优先级:

多重样式(Multiple Styles):如果外部样式、内部样式和内联样式同时应用于同一个元素,就是

使多重样式的情况。
一般情况下,优先级如下:
(外部样式)External style sheet <(内部样式)Internal style sheet <(内联样式)Inline

style
有个例外的情况,就是如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式。
示例如下:
<head>
    <style type="text/css">
     
      h3{color:green;}
    </style>
    <!-- 外部样式 style.css -->
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <!-- 设置:h3{color:blue;} -->
</head>
<body>
    <h3>测试!</h3>
</body>

说明:

document.styleSheets[0].rules[0].style 这个 styleSheets[0]数组的下标是代表本页的第N个

CSS样式表,它的下级rules[0]的数组下标表示的则是这个样式表中的第N个样式。

rules 和 cssRules 的计数方法也是不一样的!rules 是第几个选择器;cssRules 是第几条规则。

分别用 IE 和 firefox 运行下面的代码可知。
 <style type="text/css"> 
a,div,p {color:red} 
h5 {color:blue} 
</style> 
<script> 
if(document.styleSheets[0].cssRules){ 
alert(document.styleSheets[0].cssRules[3].selectorText+":"+document.styleSheets

[0].cssRules[1].style.cssText) 
}else{ 
alert(document.styleSheets[0].rules[3].selectorText+":"+document.styleSheets[0].rules

[1].style.cssText) 

</script>

js修改内部样式:
在IE里:
document.styleSheets[0].rules[0].style.display = "inline";
在firefox里:
document.styleSheets[0].cssRules[0].style.display = "inline";

可以用一个函数来搜索特定名字的style对象:

function getstyle(sname) {
for (var i=0;i<document.styleSheets.length;i++) {
var rules;
if (document.styleSheets[i].cssRules) {
rules = document.styleSheets[i].cssRules;
} else {
rules = document.styleSheets[i].rules;
}
for (var j=0;j<rules.length;j++) {
if (rules[j].selectorText == sname) {
//selectorText 属性的作用是对一个选择的地址进行替换.意思应该是获取RULES[J]的CLASSNAME.
return rules[j].style;
}
}
}
} 然后只需:getstyle(".orig").display="inline";就行了

 

js获取样式:
var mydiv = document.getElementByIdx_x('mydiv');//拿到id为mydiv的对象

if(mydiv.currentStyle) {   //针对ie的

      var width = mydiv.currentStyle['width'];  //拿到[width]的样式

      alert('ie:' + width);

} else if(window.getComputedStyle) {  //针对Firefox的

      var width = window.getComputedStyle(mydiv , null)['width'];

      alert('firefox:' + width);

}
通用方法:
function getStyle(id, css) {
 var style = document.defaultView ?
document.defaultView.getComputedStyle(document.getElementByIdx_x(id), null)[css]//FF or Other
: document.getElementByIdx_x(id).currentStyle[css]; //IE     //注意这里的[css],如['width']
 }
 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多