Как вы находите текущую ширину <div>
совместимым с кросс-браузером способом без использования библиотеки jQuery?
Как найти ширину div, используя ванильный JavaScript?
Ответ 1
document.getElementById("mydiv").offsetWidth
Ответ 2
Вы можете использовать clientWidth
или offsetWidth
Mozilla - ссылка на сеть разработчика
Это было бы как:
document.getElementById("yourDiv").clientWidth; // returns number, like 728
или с шириной бордюров:
document.getElementById("yourDiv").offsetWidth; // 728 + borders width
Ответ 3
Все ответы правильные, но я все же хочу дать некоторые другие альтернативы, которые могут работать.
Если вы ищете назначенную ширину (игнорируя отступы, маржу и т.д.), вы можете использовать.
getComputedStyle(element).width; //returns value in px like "727.7px"
getComputedStyle позволяет вам получить доступ ко всем стилям этих элементов. Например: padding, paddingLeft, margin, border-top-left-radius и т.д.
Ответ 4
Вы также можете выполнить поиск в DOM с помощью ClassName. Например:
document.getElementsByClassName("myDiv")
Это вернет массив. Если есть одно конкретное свойство, которое вас интересует. Например:
var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth;
divWidth
теперь будет равно ширине первого элемента в вашем массиве div.
Ответ 5
На самом деле вам не нужно использовать document.getElementById("mydiv")
.
Вы можете просто использовать id div, например: var w = mydiv.clientWidth;
или var w = mydiv.offsetWidth;
и др.
Ответ 6
вызов метода ниже для тега 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();
}
}
Ответ 7
Правильный способ получения вычисленного стиля - ожидание, пока страница не будет отображена. Это можно сделать следующим образом. Обратите внимание на тайм-аут при получении значений 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
значения для ширины и высоты, потому что браузеры не рендерится до полной загрузки.
Ответ 8
Другой вариант - использовать функцию getBoundingClientRect. Обратите внимание, что getBoundingClientRect вернет пустой прямоугольник, если элемент отображает 'none'.
var elem = document.getElementById("myDiv");
if(elem) {
var rect = elem.getBoundingClientRect();
console.log(rect.width);
}