zoukankan      html  css  js  c++  java
  • 如何获取元素最终使用的css值

      这个问题是在组件css加载方案中碰到的

      场景:

      元素的样式我们可以写在style里面,也可以写到外链css里面,如果没有设置,也会读取浏览器默认的css的,现在我们要计算getComputedstyle某个元素的最终所使用的css样式

      区别:

      1)style 是行内样式的写法,如果style 内有值的话,就会读取出来,如果没有,那么就为空,可读可写

      2)getComputedstyle 是读取元素的最终所使用的css的值,只读的

      解决方案:

      在ie和非ie下是不一样的处理办法的。

      在ie下:

       通过element.currentStyle 可以获得当前元素的样式

      非ie下:

       通过 document.defaultView.getComputedStyle(element,null) 其实window下这个方法也是存在的,可以直接通过window.getComputeStyle 的方式调用

     上述获得的是该元素上所有使用的css样式,但是如果要得到某个样式呢? 在非ie下,则可以再后面加上getPrototyValue('attr') 的办法(ie9目前也支持了这个方法),

    小于ie9的方法,目前可以通过2种方式获得,第一种方式是在后面["attr"] ,第二种方式是 在后面加上getAttribute("attr"),不过这种方式要求驼峰的方式命名

    综上所述 获取元素的最终所使用的css样式可以这样写

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title> New Document </title>
      <meta name="Generator" content="EditPlus">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
     </head>
     <body>
      <div id="test" style="float:left;color:red;backgound-color:#ddd;height:300px;200px;">test</div>
      <script>
        function getCurrentStyle(ele,attr){
            
            attr = (!-[1,]&& attr=="float")? "styleFloat"  :"float";
    
            if(document.defaultView){
                var style = document.defaultView.getComputedStyle(ele,null);
                return style ? style.getPropertyValue(attr): null;    
            }else{
                return ele.currentStyle[attr];
            }
        }
    
        var test = document.getElementById('test');
        
        var style = getCurrentStyle(test,"float");
    
        alert(style);
    
      </script>
     </body>
    </html>

    有一点需要注意,网上说对于float 这个属性,在ie下是 styleFloat,在非ie下是cssFloat ,我在chrome17,firefox12下用cssFloat均没有测试成功。于是我干脆写成“float”,ok!

    欢迎大家提出宝贵意见。   

  • 相关阅读:
    Cf的一些总结
    Goodbye 2019
    牛客多校第8场 A题
    19牛客多校第二场 H题
    Hihocoder1673
    记一次根据图片原尺寸设置样式,并进行缩放和拖拽
    鱼骨时间轴案例(转自CSDN,原文链接附于文中)
    jQuery横向上下排列鱼骨图形式信息展示代码时光轴样式(转自CSDN,原文链接附于文中)
    mxGraph实现鱼骨图(因果图)(转自CSDN,链接附于文中)
    erlang win64位包下载链接
  • 原文地址:https://www.cnblogs.com/yupeng/p/2512485.html
Copyright © 2011-2022 走看看