如何使用香草JavaScript查找div的宽度?


Answers:


399
document.getElementById("mydiv").offsetWidth

8
那,或者cientWidth,虽然我不知道真正的区别。
JCOC611

123
offsetWidth包括边框宽度,clientWidth不包括。
lincolnk 2011年

1
如果myDiv没有CSS规则,但在标记中定义了“ width”和“ height”,则offsetWidth返回父级宽度。没问题,我只是添加了CSS规则,并且效果很好。

在IE11中,offsetHeight始终为零
nim,

4
@nim如果您的div是否display: none包含在文档中,则偏移高度始终为零。
安迪E

38

您可以使用clientWidthoffsetWidth Mozilla开发人员网络参考

就像:

document.getElementById("yourDiv").clientWidth; // returns number, like 728

或边框宽度:

document.getElementById("yourDiv").offsetWidth; // 728 + borders width

9

所有答案都是正确的,但是我仍然想给出其他可行的选择。

如果您正在寻找分配的宽度(忽略填充,边距等),则可以使用。

getComputedStyle(element).width; //returns value in px like "727.7px"

getComputedStyle允许您访问该元素的所有样式。例如:padding,paddingLeft,margin,border-top-left-radius等。


4

您也可以使用ClassName搜索DOM。例如:

document.getElementsByClassName("myDiv")

这将返回一个数组。如果您有一个特定的属性感兴趣,例如:

var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth;

divWidth 现在将等于div数组中第一个元素的宽度。


2

实际上,您不必使用document.getElementById("mydiv")
您可以简单地使用div的ID,例如:

var w = mydiv.clientWidth;

var w = mydiv.offsetWidth;
等。


1

另一个选择是使用getBoundingClientRect函数。请注意,如果元素的显示为“ none”,则getBoundingClientRect将返回一个空矩形。

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.width);  
}

0

在div上调用下面的方法,或者在body标签上调用onclick =“ show(event);”;函数show(event){

        var x = event.clientX;
        var y = event.clientY;

        var ele = document.getElementById("tt");
        var width = ele.offsetWidth;
        var height = ele.offsetHeight;
        var half=(width/2);
       if(x>half)
        {
          //  alert('right click');
            gallery.next();
        }
        else
       {
           //   alert('left click');
            gallery.prev();
        }


    }

0

获取计算样式的正确方法是等待页面呈现。可以通过以下方式完成。注意超时获取auto值。

function getStyleInfo() {
    setTimeout(function() {
        const style = window.getComputedStyle(document.getElementById('__root__'));
        if (style.height == 'auto') {
            getStyleInfo();
        }
        // IF we got here we can do actual business logic staff
        console.log(style.height, style.width);
    }, 100);
};

window.onload=function() { getStyleInfo(); };

如果您只使用

window.onload=function() {
    var computedStyle = window.getComputedStyle(document.getElementById('__root__'));
}

您可以获取auto宽度和高度的值,因为浏览器要等到执行满载后才能呈现。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.