zoukankan      html  css  js  c++  java
  • style、currentStyle、getComputedStyle区别介绍

    style、currentStyle、getComputedStyle区别介绍

     

    样式表有三种方式

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

    内部样式(internal Style Sheet):是写在HTML的里面的,内部样式只对所在的网页有效。

    外部样式表(External Style Sheet):如果很多网页需要用到同样的样式(Styles),将样式(Styles)写在一个以.css为后缀的CSS文件里,然后在每个需要用到这些样式(Styles)的网页里引用这个CSS文件。 最常用的是style属性,在JavaScript中,通过document.getElementById(id).style.XXX就可以获取到XXX的值,但意外的是,这样做只能取到通过内嵌方式设置的样式值,即style属性里面设置的值。

     

    解决方案:引入currentStyle,runtimeStyle,getComputedStyle style 标准的样式,可能是由style属性指定的!

    runtimeStyle 运行时的样式!如果与style的属性重叠,将覆盖style的属性!

    currentStyle 指 style 和 runtimeStyle 的结合! 通过currentStyle就可以获取到通过内联或外部引用的CSS样式的值了(仅限IE) 如:document.getElementById("test").currentStyle.top

    要兼容FF,就得需要getComputedStyle 出马了

    注意: getComputedStyle是firefox中的, currentStyle是ie中的. 比如说

    1 <style>
    2 #mydiv {
    3      width : 300px;
    4 }
    5 </style>

    则:

    1 var mydiv = document.getElementById('mydiv');
    2 if(mydiv.currentStyle) {
    3       var width = mydiv.currentStyle['width'];
    4       alert('ie:' + width);
    5 } else if(window.getComputedStyle) {
    6       var width = window.getComputedStyle(mydiv , null)['width'];
    7       alert('firefox:' + width);
    8 }

    另外在FF下还可以通过下面的方式获取

    1 document.defaultView.getComputedStyle(mydiv,null).width;
    2 window.getComputedStyle(mydiv , null).width;

    举一个运动的例子:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <style>
     5 #div1 {100px; height:100px; background:red; border:1px solid black;}
     6 </style>
     7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     8 <title>无标题文档</title>
     9 <script type="text/javascript">
    10 function getStyle(obj, attr)
    11 {
    12     if(obj.currentStyle)
    13     {
    14         return obj.currentStyle[attr];
    15     }
    16     else
    17     {
    18         return window.getComputedStyle(obj, false)[attr];
    19     }
    20 }
    21 
    22 setInterval(function (){
    23     var oDiv=document.getElementById('div1');
    24     
    25     //oDiv.style.width=oDiv.offsetWidth-1+'px';
    26     oDiv.style.width=parseInt(getStyle(oDiv, 'width'))-1+'px';
    27 }, 30);
    28 
    29 </script>
    30 </head>
    31 
    32 <body>
    33 <div id="div1"></div>
    34 </body>
    35 </html>
  • 相关阅读:
    图像滤波与OpenCV中的图像平滑处理
    OpenCV创建轨迹条,图片像素的访问
    模板类和友元的总结和实例验证
    C++中运算符重载
    C++之Stack模板类
    C++中explicit关键字的作用
    #ifdef-#endif的作用及其使用技巧
    ZOJ 3170 Friends
    ZOJ 3713 In 7-bit
    HDU 1421 搬寝室
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/4703960.html
Copyright © 2011-2022 走看看