zhurawlenokk
@zhurawlenokk

Как отслеживать ширину окна через js?

Приветствую всех. Такой вопрос, как сделать "резиновость(отзывчивость)" через js? Нужно максимально просто, т.к я только начинаю учить сей язык...
ТЗ такое "Вёрстка должна быть отзывчивой (Responsive), минимальная ширина обёрнутого содержимого
630px, максимальная — 1270px. Проверяться будет именно изменение ширины обёрнутого
шаблона, а не изменение ширины окна браузера, т. е. если, например, ширина окна браузера
1920, а ширина обёрнутого содержимого будет ограничена 630-ю пикселями, то шаблон должен
соответствовать макету 630.psd."

UPD: так как у меня уже было сверстано через медиа-запрос, было решено если ширина меньше 1270 - добавлять класс .mobile. В связи с этим вопрос, как выбрать все элементы внутри контейнера? Мой чудо-код выдает ошибку "Uncaught TypeError: Cannot read property 'add' of undefined at addClass"

const container = document.querySelector('.container'),
All = document.body.querySelectorAll('*');

console.log(All);

function addClass() {
if (container.offsetWidth < 1270) {

container.classList.add('mobile'),

console.log('done');

} else if (container.classList.contains('mobile')) {
console.log('true'),

All.classList.add('mobile'); (58 строка)

console.log('added');

};

};

let timerId = setInterval(() => addClass(), 500);

addClass();
  • Вопрос задан
  • 590 просмотров
Пригласить эксперта
Ответы на вопрос 1
Если нужна ширина и высота окна браузера то: window.innerWidth и window.innerHeight

Если ширина блока то:
let elNode = document.querySelector('.js-question-text');
let elWidth = elNode .getBoundingClientRect().width;
console.log(elNode.getBoundingClientRect());


function resizeFunc(){
//функция
}

//Отслеживание изменения размера окна. Даймаут для отложенного выполнения на 0.5 секунды чтобы не лагало
let timer = setTimeout(() => {}, 10);
window.addEventListener('resize', (e) => {
  clearTimeout(timer);
  timer = setTimeout(() => {
    resizeFunc();//Выполняемая функция
  }, 500);
});

//Запуск функции при загрузке страницы
document.addEventListener('DOMContentLoaded', resizeFunc);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы