I realise I can use jQuery to get the width of an element, but I'm curious; is there a way to do so using AngularJS?
The offsetWidth property returns the viewable width of an element (in pixels) including padding, border and scrollbar, but not the margin. The offsetWidth property is read-only.
The outerWidth() method returns the width of an element (includes padding and border).
To get the width of a specific HTML Element in pixels, using JavaScript, get reference to this HTML element, and read the clientWidth property of this HTML Element. clientWidth property returns the width of the HTML Element, in pixels, computed by adding CSS width and CSS padding (top, bottom) of this HTML Element.
Native JS (#id):
document.getElementById(id).clientWidth;
Native JS (querySelector (class, id, css3 selector)):
document.querySelectorAll(".class")[0].clientWidth;
Plugging this into angular.element:
angular.element(document.getElementById(id)).clientWidth; angular.element(document.querySelectorAll(".class")[0]).clientWidth;
If you need to get non rounded numbers, use getBoundingClientRect.
angular.element(document.getElementById(id)).getBoundingClientRect();
Some resources on the subject:
If this floats your boat in terms of syntax and the no-need to plug jQuery into the mix, be wary of cross browser hell.
If you've been scratching your head like me over all these suggestions and they don't work, i found i had to set a timeout. I'm not sure why, maybe because i'm using material design attributes on my divs.
setTimeout(function(){ var divsize = angular.element(document.getElementById('fun_div')).prop('offsetWidth'); console.log('Width of fun_div: ' + divsize); },50);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With