+发表新主题
查看: 1597|回复: 0

[代码片段] DOM 修改元素样式属性

[复制链接]

[代码片段] DOM 修改元素样式属性

[复制链接]
殷三姗 发表于 2016-1-16 11:51:53 浏览:  1597 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
今天学习修改元素样式属性:

1. 修改元素样式:

    1.内联样式:都定义在元素style属性中(在行内)

       elem.style--->CSSStyleDeclaration类型的对象

       获取或设置元素的内联样式属性:

          elem.style.属性名

            属性名:css属性名去横线,变驼峰

    问题

      获取只能获得内联样式中的属性,无法获得样式表中级联或继承来的外部属性。

             修改样式放在内联样式中的属性,优先级最高!覆盖所有外部的!

             何时使用style:修改一个元素的样式时。


    2.样式表中的样式:

       1.获取计算后的样式:最终层叠应用到一个元素上的所有样式列表。

              DOM: var style=getComputedStyle(elem);

              IE8:var style=elem.currentStyle;


  解决浏览器兼容问题:

              if(elem.currentStyle){//IE8+

               var style=elem.currentStyle;

              }else{//IE9+

              var style=getComputedStyle(elem);

              }

     何时使用:只要获取一个元素的属性时都要获取计算后的样式

              强调:getComputedStyle返回的style对象是只读的!


       2.修改样式表中的样式:

         1.样式表对象:<style></style>

                      <link rel="stylesheet".../>

          获得样式表对象:

                     var sheet=document.styleSheets<i>;

                      sheetCSSStyleSheet类型的对象

                   2.CSS规则对象:

                     var rule=sheet.cssRules<i>;

                    ruleCSSStyleRule类型的对象

                    rule对象下还可以继续包含cssRules集合

           3.获取或设置规则中的属性:

                rule.style.属性名="属性值";


     例如:

         

  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4.   <title>实现表盘样式的时间显示</title>

  5.   <meta charset="utf-8"/>

  6.   <link rel="Stylesheet" href="css/4_2.css"/>

  7.   <style>

  8. #clock{width:100px; height:100px;

  9. border-radius:50%;

  10. border:4px solid black;

  11. position:relative;

  12. }

  13. #s{width:2px; height:55px;

  14. position:absolute; top:5px; left:49px;

  15. background-color:red;

  16. transform-origin:50% 45px;

  17. -webkit-animation:rotateS 60s linear infinite;

  18. }

  19. #m{width:4px; height:50px;

  20. position:absolute; top:10px; left:48px;

  21. background-color:black;

  22. transform-origin:50% 40px;

  23. -webkit-animation:rotateM 3600s linear infinite;

  24. }

  25. #h{width:6px; height:45px;

  26. position:absolute; top:15px; left:47px;

  27. background-color:black;

  28. transform-origin:50% 35px;

  29. -webkit-animation:rotateH 43200s linear infinite;

  30. }

  31. @-webkit-keyframes rotateS{

  32. 0%{transform:rotate(0deg)}

  33. 100%{transform:rotate(360deg)}

  34. }

  35. @-webkit-keyframes rotateM{

  36. 0%{transform:rotate(0deg)}

  37. 100%{transform:rotate(360deg)}

  38. }

  39. @-webkit-keyframes rotateH{

  40. 0%{transform:rotate(0deg)}

  41. 100%{transform:rotate(360deg)}

  42. }

  43.   </style>

  44.   <script src="js/4_2.js"></script>

  45. </head>

  46. <body>

  47.   <div id="clock">

  48. <div id="h"></div>

  49. <div id="m"></div>

  50. <div id="s"></div>

  51. <div id="a1">I</div>

  52. <div id="a2">II</div>

  53. <div id="a3">III</div>

  54. <div id="a4">IIII</div>

  55. <div id="a5">V</div>

  56. <div id="a6">VI</div>

  57. <div id="a7">VII</div>

  58. <div id="a8">VIII</div>

  59. <div id="a9">IX</div>

  60. <div id="a10">X</div>

  61. <div id="a11">XI</div>

  62. <div id="a12">XII</div>

  63.   </div>



  64. </body>

  65. </html>
复制代码
下面是js文件:

      

  1. var now=new Date();

  2. var h=now.getHours();

  3. h>12&&(h-=12);

  4. var m=now.getMinutes();

  5. var s=now.getSeconds();

  6. //计算当前时间下时针,分针,秒针转过的角度

  7. var sDeg=s*6;

  8. var mDeg=m*6+sDeg/60;

  9. var hDeg=h*30+mDeg/12;



  10. //修改样式表中的样式属性

  11. var sheet=document.styleSheets[1];

  12. var sRule=sheet.cssRules[4];

  13. sRule.cssRules[0].style.transform="rotate("+sDeg+"deg)";

  14. sRule.cssRules[1].style.transform="rotate("+(sDeg+360)+"deg)";

  15. var mRule=sheet.cssRules[5];

  16. mRule.cssRules[0].style.transform="rotate("+mDeg+"deg)";

  17. mRule.cssRules[1].style.transform="rotate("+(mDeg+360)+"deg)";

  18. var hRule=sheet.cssRules[6];

  19. hRule.cssRules[0].style.transform="rotate("+hDeg+"deg)";

  20. hRule.cssRules[1].style.transform="rotate("+(hDeg+360)+"deg)";
复制代码

下面是页面效果:

       115055cdza4gw4gveoeeta.png
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网