AnDrIYQ
@AnDrIYQ
Неудачник

Поможете с адаптацией сайта?

Не знаю даже за что зацепиться, создал кусок кода в JQuery который отвечает за "функцию" свертывания и выпадания навигационного бара при нажатии на logo, при расширении больше 1184px функция работать не должна. Но все же заметно ее работу на ширине экрана в 1199px. Может кто поймет что за фигня? Тестил на Chrome.

P.S знаю что код там Г***о, Учу верстку только четвертый день, многое понял вообще недавно.

  • Вопрос задан
  • 974 просмотра
Решения вопроса 1
erge
@erge
Примус починяю
Андрей Юрчук,
А JQuery в несложных операциях редко подводит. Этот случай редкость, если это вообще из-за JQ

потому что вы говорите за JQuery, а пишете какую-то лапшу перемешанную!?

см. JQuery API Documentation
.width()
.resize()
Определяем размер окна браузера (JavaScript, jQuery)

как-то так:
$(function(){
  if ($(window).width() < 1184) {
    $( "#nav1" ).css( "display", 'none');
    $( "#nav2" ).css( "display", 'none');
  }

  $(window).resize(function(){
    if ($(window).width() < 1184) {
      $( "#nav1" ).css( "display", 'none');
      $( "#nav2" ).css( "display", 'none');
    }  else {
      $( "#nav1" ).css( "display", 'flex');
      $( "#nav2" ).css( "display", 'flex');
    }
  })

  $( ".nav-logo" ).click(function() {
    if ($(window).width() < 1184) {
      $( "#nav1" ).toggle( "slow", function() {
        // Animation complete.
        // $(this).rotate(100);
      });
      $( "#nav2" ).toggle( "slow", function() {
        // Animation complete.
        // $(this).rotate(100);
      });
    } else {
      $( "#nav1" ).css( "display", 'flex');
      $( "#nav2" ).css( "display", 'flex');
    }
  });

});


Про window.matchMedia посмотрите статью:
Изучаем matchMedia API и object MediaQueryList

и судя по всему, в условии надо было писать так:
window.matchMedia('screen and (max-width: 1184px)').matches

if (window.matchMedia('screen and (max-width: 1184px)').matches) {
  $( "#nav1" ).css( "display", 'none');
  $( "#nav2" ).css( "display", 'none');
} else {
  $( "#nav1" ).css( "display", 'flex');
  $( "#nav2" ).css( "display", 'flex');
}


так же - Адаптивный jQuery без window.matchMedia

UPDATE:
Извиняюсь, гоню. переработал )))
в принципе-то ваш скрипт работает!

PS: Замените у себя все значения 1184 на 1000 на jsfiddle и раздвиньте окно с результатом на максимум, все норм (у меня просто экран узкий, не влазит, сильно не могу раздвинуть :) ).

PPS: так же все скрипты должны быть либо в конце страницы, либо вызываться по onload (см. мой скрипт)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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