@ligisayan

Как реализовать медиазапрос на js?

Всем привет. Подскажите как условие скрипта:
$('.frame').each(function() { if (...) {...} });
реализовать для на разрешениях мобильного устройства, т.е.
$(window).resize(function(){
   if ($(window).width() <= 1024) { 
          // условие для мобильных устройств
   }    
});

Нужно его внутри повторно прописывать или медиа запрос можно как-то реализовать внутри цикла, чтобы не создавать повторные условия?
  • Вопрос задан
  • 1081 просмотр
Решения вопроса 1
@mr-molodoy
Не совсем ясно, что Вы имеете ввиду. Для чего Вам использовать цикл? Если Вы будете в цикле при каждой итерации проверять размер какого либо блока и плюс еще производить те или иные расчеты и / или манипуляции основываясь на этих данных, то готовьтесь к адским мучениям с производительностью.
Как Вы сами же и упомянули в javascript имеется событие на изменение размера окна браузера. В jQuery к нему можно обратится как:
$(window).resize(function () {
    console.log( $( window ).width() ); // Запишем в консоль новый размер
});

или
$(window).on('resize', function () {
    console.log( $( window ).width() ); // Запишем в консоль новый размер
});


Вот Вам для примера набросал код на jsfiddle который демонстрирует всю работу.
Красный квадрат должен изменять свой цвет на зеленый если размер окна Вы измените на 620, либо меньше пикселей в ширину и при этом поменяет свой цвет обратно, если вы увеличите ширину окна.

Код: https://jsfiddle.net/cxnesxej/2/
Результат в отдельном окне: https://jsfiddle.net/cxnesxej/2/embedded/result/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
https://github.com/xoxco/breakpoints
Используй готовое решение
Ответ написан
Комментировать
anxieter
@anxieter
Дабы не плодить подобные темы хотел бы написать свой вопрос в похожей тематике.
Прошу Вас помочь доработать скрипт. Скрипт ресайзит фоновую картинку согласно разрешению экрана. Однако я столкнулся с проблемой - на мобильниках, когда контент внутри блока с данным фоном больше, чем разрешение экрана, он обрезает этот самый контент. 5304ef5db7644e868d2d45538bef9420.jpeg
Для этого я решил воспользоваться медиазапросом. А вот какой результат:
В ChromeMobile, FirefoxMobile, картинка обрезается. В SafariMobile, YandexMobile, AndroidMobile срабатывает - то есть фон растягивается по контенту ниже нижней границы экрана.
Где-то нужно его доработать, но не знаю как, чтобы срабатывал во всех браузерах.
<section class="intro fullheight">
   ....content....
</section>

var wheight = $(window).height();
						var width = $(window).width();
						
						if (width => '768'){
							$('.fullheight').css('height', wheight);
							$(window).resize(function(){
								wheight = $(window).height();			
								$('.fullheight').css('height', wheight);
							}) 	
						} else {$('.fullheight').css('height', '700px');}


Значение 700px было поставлено просто наугад.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы