Как отключить JavaScript с внутренней шириной окна

#javascript

#javascript

Вопрос:

Страница, над которой я работаю, имеет эффект наклона, который влияет на ориентацию тела сайта. Я хочу отключить это, когда страница достигнет области просмотра мобильного устройства; Я посмотрел и попробовал несколько вещей, но, похоже, не могу добиться желаемого эффекта. Приведенный ниже код — это то, что я использую. Этот скрипт выполняется отдельно от моего основного JS-кода.

 window.addEventListener("mousemove",function(e) {

  var width = window.innerWidth;
  var height = window.innerHeight;
  var clientHeight = document.body.clientHeight;
  var skew = {};
  skew.y = (20 * ((e.x / width) - 0.5));
  skew.x = -(20 * ((e.y / height) - 0.5));

  document.body.style.webkitTransform = "perspective(" clientHeight "px) rotateX(" skew.x "deg) rotateY(" skew.y "deg)";

});
  

Комментарии:

1. Что значит «отключить это»? Например, просто не запускать этот скрипт, если экран пользовательского устройства меньше определенного размера? Или динамически отключать и включать его в ответ на изменение пользователем размера окна браузера?

2. Я бы хотел, чтобы наклон включался только тогда, когда окно broswer имеет полный размер.. Я попробовал следующее. window.addEventListener(‘resize’, функция(){ если(window.innerWidth > 568){ … выполнить скрипт } Но, похоже, это не работает, я предполагаю, что я не знаю синтаксиса для запуска скрипта?

Ответ №1:

Изменения CSS сами по себе не удалятся, поэтому вам придется удалить преобразование вручную, если окно браузера меньше нужного вам размера.

Проверьте изменение размера окна,

 window.addEventListener('resize', function() {
  if (window.innerWidth < 568) {
    document.body.style.webkitTransform = '';
  }
});
  

А также убедитесь, что вы не применяете его повторно, если пользователь перемещает мышь.

 // This is the function you already have
window.addEventListener('mousemove', function(e) {
  if (window.innerWidth < 568) {
    return;
  }
  ...
}
  

Комментарии:

1. Итак, я бы добавил их в JS-файл, который отвечает за эффект, или в основной JS-файл для сайта?

2. Файл JS, отвечающий за эффект. Второй фрагмент кода — это модификация того, что вы опубликовали изначально, просто добавьте этот оператор if внутри функции mousemove.

3. Ладно, я думаю, у меня получилось, что по большей части это работает, в мобильном режиме все еще немного скручивается, но это лучше, чем было.. Большое спасибо за помощь.

4. Если изначально в нем все еще есть twist, попробуйте запустить document.body.style. webkitTransform = «; при загрузке страницы. Если мой ответ решил вашу проблему, пожалуйста, отметьте его как «принятый», установив большую галочку.