How do you find the current width of a <div> in a cross-browser compatible way without using a library like jQuery?
-
139+1 for the "no jQuery" comment :)Zlatko– Zlatko2013-06-13 17:25:44 +00:00Commented Jun 13, 2013 at 17:25
-
5Possible duplicate of Understanding offsetWidth, clientWidth, scrollWidth and -Height, respectively (which, indeed, has been asked much later, but still has a much more elaborate answer).user1544337– user15443372016-10-04 15:39:43 +00:00Commented Oct 4, 2016 at 15:39
8 Answers
document.getElementById("mydiv").offsetWidth
6 Comments
cientWidth, altho I don't know the real difference.offsetWidth includes border width, clientWidth does not.display: none or is not part of the document, it will always have zero offset height.offsetWidth and clientWidth.You can use clientWidth or offsetWidth Mozilla developer network reference
It would be like:
document.getElementById("yourDiv").clientWidth; // returns number, like 728
or with borders width :
document.getElementById("yourDiv").offsetWidth; // 728 + borders width
Comments
All Answers are right, but i still want to give some other alternatives that may work.
If you are looking for the assigned width (ignoring padding, margin and so on) you could use.
getComputedStyle(element).width; //returns value in px like "727.7px"
getComputedStyle allows you to access all styles of that elements. For example: padding, paddingLeft, margin, border-top-left-radius and so on.
Comments
You can also search the DOM using ClassName. For example:
document.getElementsByClassName("myDiv")
This will return an array. If there is one particular property you are interested in. For example:
var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth;
divWidth will now be equal to the the width of the first element in your div array.
Comments
call below method on div or body tag onclick="show(event);" function 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();
}
}
Comments
The correct way of getting computed style is waiting till page is rendered. It can be done in the following manner. Pay attention to timeout on getting auto values.
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(); };
If you use just
window.onload=function() {
var computedStyle = window.getComputedStyle(document.getElementById('__root__'));
}
you can get auto values for width and height because browsers does not render till full load is performed.