js修改css样式表解析(转)

it2022-05-05  129

js修改css样式表解析(转)2009-12-30 14:57

abc.css

CSS code

.class1 {width:10px;background-color: red;}

HTML code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><link rel="stylesheet" type="text/css" href="abc.css" />

<TITLE> New Document </TITLE><script>window.οnlοad=fnInit;function fnInit(){// 访问 styleSheet 中的一条规则, 将其 backgroundColor 改为蓝色。var oStyleSheet=document.styleSheets[0];var oRule=oStyleSheet.rules[0];oRule.style.backgroundColor="#0000FF";}

</script></HEAD>

<BODY><div class="class1">aaa</div></BODY></HTML>

(2)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> New Document </TITLE>

<style type="text/css"><!--#apDiv1 {position:absolute;width:399px;height:195px;z-index:1;border:1px solid #000;background-color:#CCCCCC;}--></style>

<script>window.onload = function(){alert(document.getElementById('apDiv1').currentStyle.width)}

</script>

</HEAD>

<BODY><div id="apDiv1">aaa</div>

</BODY></HTML>

还可以用   document.styleSheets(i).href   可以知道当前页面中引用的每个css的文件!

另:CSS属性与JavaScript编码对照表

(一定要注意, 上次本人_何向阳,在使用js修改css的中margin-left属性时,总报"left"未定义,后来,找了好多资料,才发现在js中,margin-left的写法为:marginLeft,恍然大悟,希望遇到相同问题的朋友,谨慎对待。)

CSS与JS紧密配合,为我们的页面增添了很多别致的效果。为了达到某种特殊的效果我们需要用Javascript动态的去更改某一个标签的CSS属性。

    比如:鼠标经过一个图片时我们让图片加一个边框,代码可能是这样:JavaScript中style后面的属性应该是什么?<script type="text/javascript">    function imageOver(e) {    e.style.border="1px solid red";    }    function imageOut(e) {    e.style.borderWidth=0;    }    </script>

<img src="css.png" οnmοuseοver="imageOver(this)" οnmοuseοut="imageOut(this)" />

    JavaScript CSS Style属性对照表

    盒子标签和属性对照CSS语法 (不区分大小写)   JavaScript语法 (区分大小写) border   border border-bottom   borderBottom border-bottom-color   borderBottomColor border-bottom-style   borderBottomStyle border-bottom-width   borderBottomWidth border-color   borderColor border-left   borderLeft border-left-color   borderLeftColor border-left-style   borderLeftStyle border-left-width   borderLeftWidth border-right   borderRight border-right-color   borderRightColor border-right-style   borderRightStyle border-right-width   borderRightWidth border-style   borderStyle border-top   borderTop border-top-color   borderTopColor border-top-style   borderTopStyle border-top-width   borderTopWidth border-width   borderWidth clear   clear float   floatStyle margin   margin margin-bottom   marginBottom margin-left   marginLeft margin-right   marginRight margin-top   marginTop padding   padding padding-bottom   paddingBottom padding-left   paddingLeft padding-right   paddingRight padding-top   paddingTop

颜色和背景标签和属性对照CSS语法 (不区分大小写)   JavaScript语法 (区分大小写) background   background background-attachment   backgroundAttachment background-color   backgroundColor background-image   backgroundImage background-position   backgroundPosition background-repeat   backgroundRepeat color   color 样式标签和属性对照CSS语法 (不区分大小写)   JavaScript语法 (区分大小写) display   display list-style-type   listStyleType list-style-image   listStyleImage list-style-position   listStylePosition list-style   listStyle white-space   whiteSpace 文字样式标签和属性对照CSS语法 (不区分大小写)   JavaScript语法 (区分大小写) font   font font-family   fontFamily font-size   fontSize font-style   fontStyle font-variant   fontVariant font-weight   fontWeight 文本标签和属性对照CSS语法 (不区分大小写)   JavaScript语法 (区分大小写) letter-spacing   letterSpacing line-break   lineBreak line-height   lineHeight text-align   textAlign text-decoration   textDecoration text-indent   textIndent text-justify   textJustify text-transform   textTransform vertical-align   verticalAlign

 

obj.style方法,这个方法只能JS只能获取写在html标签中的写在style属性中的值(style="..."),看一下代码

XML/HTML代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <html xmlns="http://www.w3.org/1999/xhtml">   <head>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <title>JS获取CSS属性值</title>   <style type="text/css">   <!-- .ss{color:#cdcdcd;} -->   </style>   </head>   <body>   <div id="css88" class="ss" style="width:200px; height:200px; background:#333333">JS获取CSS属性值</div>   <script type="text/javascript">   alert(document.getElementById("css88").style.width);//200px    alert(document.getElementById("css88").style.color);//空白    </script>       </body>   </html>  

上面这个例子对id为"css88"的div设置了2种烦事的样式,包括style和外部样式class。

从alert出来的信息可以看到,document.getElementById("css88").style方法获取不到class为ss的属性和值。

那么这么样才能获取到class为ss的属性和值呢?

IE中使用的是obj.currentStyle方法,而FF是用的是getComputedStyle 方法。

网上一个比较方法是:

XML/HTML代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <html xmlns="http://www.w3.org/1999/xhtml">   <head>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   <title>S获取CSS属性值</title>   <style type="text/css">   <!-- .ss{background:blue; color:#cdcdcd; width:200px} -->   </style>   </head>   <body>   <p id="qq" class="ss" >sdf</p>   <script type="text/javascript">   function GetCurrentStyle (obj, prop) {      if (obj.currentStyle) {         return obj.currentStyle[prop];      }       else if (window.getComputedStyle) {         propprop = prop.replace (/([A-Z])/g, "-$1");            propprop = prop.toLowerCase ();         return document.defaultView.getComputedStyle (obj,null)[prop];      }       return null;    }    var dd=document.getElementById("qq");    alert(GetCurrentStyle(dd,"width"));    </script>   </body>   </html>  

当然,如果您是引用外部的css文件同样适用。

另:可以将上面的方法简化为

JavaScript代码function getDefaultStyle(obj,attribute){ // 返回最终样式函数,兼容IE和DOM,设置参数:元素对象、样式特性    return obj.currentStyle?obj.currentStyle[attribute]:document.defaultView.getComputedStyle(obj,false)[attribute];    }

转载于:https://www.cnblogs.com/hongjiumu/archive/2012/09/12/2681284.html


最新回复(0)