美文网首页
05-获取元素宽高的其他方式

05-获取元素宽高的其他方式

作者: 仰望_IT | 来源:发表于2019-05-13 08:57 被阅读0次
<style>
        div{
            width: 100px;
            height: 100px;
            padding: 50px;
            border: 50px solid #000;
            background: red;
            background-clip: content-box;
        }
</style>
<div id="box"></div>
  • 1. 通过 getComputedStyle获取元素宽高

      1.1 获取的宽高不包括 边框和内边距
      1.2 既可以获取行内设置的宽高也可以获取CSS设置的宽高
      1.3 只支持获取, 不支持设置
      1.4 只支持IE9及以上的浏览器
    
      // 既可以获取行内设置的宽高也可以获取CSS设置的宽高
      var oDiv = document.getElementById("box");
      var style = getComputedStyle(oDiv);
      console.log(style.width);   // 100px
      console.log(style.height);  // 100px
    
      var oDiv = document.getElementById("box");
      oDiv.style.width = "166px";
      oDiv.style.height = "166px";
      var style = getComputedStyle(oDiv);
      console.log(style.width);   // 166px
      console.log(style.height);  // 166px
    
      // 只支持获取, 不支持设置
      var oDiv = document.getElementById("box");
      var style = getComputedStyle(oDiv);
      style.width = "166px";
      style.height = "166px";
      console.log(style.width);   // 报错
      console.log(style.height);  // 报错
    
  • 2. 通过 currentStyle属性获取宽高

      2.1 获取的宽高不包括 边框和内边距
      2.2 既可以获取行内设置的宽高也可以获取CSS设置的宽高
      2.3 只支持获取, 不支持设置
      2.4 只支持IE9以下的浏览器
    
      // 既可以获取行内设置的宽高也可以获取CSS设置的宽高
      var oDiv = document.getElementById("box");
      var style = oDiv.currentStyle;
      console.log(style.width);   // 100px
      console.log(style.height);  // 100px
    
      var oDiv = document.getElementById("box");
      oDiv.style.width = "166px";
      oDiv.style.height = "166px";
      var style = oDiv.currentStyle;
      console.log(style.width);   // 166px
      console.log(style.height);  // 166px
    
      var oDiv = document.getElementById("box");
      var style = oDiv.currentStyle;
      style.width = "166px";
      style.height = "166px";
      console.log(style.width);   // 报错
      console.log(style.height);  // 报错
    
  • 3. 通过style属性获取宽高

      3.1 获取的宽高不包括 边框和内边距
      3.2 只能获取内设置的宽高, 不能获取CSS设置的宽高
      3.3 可以获取也可以设置
      3.4 高级低级浏览器都支持
    
      // 只能获取内设置的宽高, 不能获取CSS设置的宽高
      var oDiv = document.getElementById("box");
      console.log(oDiv.style.width);  // 
      console.log(oDiv.style.height); // 
    
      // 可以获取也可以设置
      var oDiv = document.getElementById("box");
      oDiv.style.width = "166px";
      oDiv.style.height = "166px";
      console.log(oDiv.style.width);  // 166px
      console.log(oDiv.style.height); // 166px
    
  • 4. offsetWidth和offsetHeight

      4.1 获取的宽高包含 边框 + 内边距 + 元素宽高
      4.2 既可以获取行内设置的宽高也可以获取CSS设置的宽高
      4.3 只支持获取, 不支持设置
      4.4 高级低级浏览器都支持
    
      // 获取的宽高包含 边框 + 内边距 + 元素宽高
      var oDiv = document.getElementById("box");
      console.log(oDiv.offsetWidth);  // 300
      console.log(oDiv.offsetHeight); // 300
    
      // 既可以获取行内设置的宽高也可以获取CSS设置的宽高
      var oDiv = document.getElementById("box");
      oDiv.style.width = "166px";
      oDiv.style.height = "166px";
      console.log(oDiv.offsetWidth);  // 366
      console.log(oDiv.offsetHeight); // 366
    
      // 只支持获取, 不支持设置
      var oDiv = document.getElementById("box");
      oDiv.offsetWidth = "166px";
      oDiv.offsetHeight = "166px";
      console.log(oDiv.offsetWidth);  // 300
      console.log(oDiv.offsetHeight); // 300
    

  • 这四种方式的区别与联系

    • 1.getComputedStyle/currentStyle/style
      获取的宽高不包括 边框和内边距
    • 2.offsetWidth/offsetHeight
      获取的宽高包括 边框和内边距

    • 3.getComputedStyle/currentStyle/offsetXXX
      只支持获取, 不支持设置
    • 4.style
      可以获取, 也可以设置

    • 5.getComputedStyle/currentStyle/offsetXXX
      即可以获取行内,也可以获取外链和内联样式
    • 6.style
      只能获取行内样式

相关文章

网友评论

      本文标题:05-获取元素宽高的其他方式

      本文链接:https://www.haomeiwen.com/subject/ugpkaqtx.html