JavaScript基础 getcomputedStyle()

getcomputedStyle()获取电脑计算后的样式

div{
  width: 200px;
  height: 200px;
  background: red;
}
<div></div>
var oDiv = document.getElementsByTagName ( 'div' )[0];
console.log( getComputedStyle( oDiv ) );
得到所有的样式

得到其中一个属性值:

var oDiv = document.getElementsByTagName ( 'div' )[0];
console.log( getComputedStyle( oDiv ).width );

得到是200px;
如果没有给DIV设置宽度获取到的是窗口的宽度;div是块级元素


窗口的宽度

IE8及以下不兼容;

var oDiv = document.getElementsByTagName( 'div' )[0];
//            console.log( getComputedStyle( oDiv ).width );
        var width;
            if( window.getComputedStyle ){ //判断window有没有这个函数
                width = window.getComputedStyle(oDiv).width; //如果有用这个方法
            } else {
                width = oDiv.currentStyle.width;//如果没有用这个方法
            }
        console.log( width );

通用函数

      function getStyle( obj , attr ){
            if( window.getComputedStyle ){ //判断window有没有这个函数
                return  window.getComputedStyle(obj)[attr]; //如果有用这个方法 []我们下面传的是一个字符串如果用[]
            } else {
                return  obj.currentStyle[attr];//如果没有用这个方法
            }
        }
//
      function getStyle( obj , attr ){
            if( window.getComputedStyle ){ //判断window有没有这个函数
                return  window.getComputedStyle(obj)[attr]; //如果有用这个方法 []我们下面传的是一个字符串如果用[]
            } else {
                return  obj.currentStyle[attr];//如果没有用这个方法
            }



      三目写法 return要写在前面
      return window.getComputedStyle ? window.getComputedStyle(obj)[attr] : obj.currentStyle[attr];
        }

另一种写法:
function getStyle( obj ){
    if( obj.currentStyle ){ //假如能获取到 就是IE浏览器  得到的是对象  就是真
        return obj.currentStyle;
    } else {
        return getComputedStyle( obj );
    }
 
用||来写
return obj.currentStyle || getComputedStyle( obj );
}

例题:

var objWidth = parseInt ( getStyle( oDiv , 'width' ));
            console.log( objWidth );
        oDiv.onclick = function (){
            this.style.width = parseInt ( getStyle( oDiv , 'width' )) + 200 + 'px';
        }

每点一次增加200px


点击一次

第二次点击

第三次点击
 var objWidth = parseInt ( getStyle( oDiv , 'width' ));
            console.log( objWidth );
        oDiv.onclick = function (){
            this.style.left = parseInt ( getStyle( oDiv , 'left' )) + 200 + 'px';
        }
没点击前

点击一次

第二次点击
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,290评论 1 92
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,394评论 0 1
  • 第一部分HTML&CSS整理答案1.什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HTML5...
    Programmer客栈阅读 2,120评论 0 12
  • 时间过得而很快,又是一年新春佳节,当大家都沉浸在节日的欢庆气氛中的时候,瀚哥我也从日常打拼的魔都回到了阔别已久的故...
    慕容随风阅读 1,507评论 4 15
  • 工欲善其事必先利其器,给那些刚刚入坑的画友安利一些画材,仅供参考。 ☆垫板 Nine Sea A3切割板 ☆画纸部...
    追光柚子阅读 1,020评论 0 2

友情链接更多精彩内容