Запретить выполнение скрипта в зависимости от размера экрана

0

В настоящее время я пытаюсь предотвратить выполнение Javascript для экранов, размер которых меньше 769 пикселей. Я полный новичок Javascript, этот скрипт из учебника Codrops о том, как оживить заголовок на прокрутке. Я сделал небольшую модификацию, которая позволяет мне использовать изображения. Исходный сценарий использовался только для текстовых элементов. Вот слегка модифицированный скрипт целиком.

var cbpAnimatedHeader = (function() {

var docElem = document.documentElement,
    header = document.querySelector( '.header-outer' ),
    logo = document.querySelector( '.logo' )
    didScroll = false,
    changeHeaderOn = 300;




function init() {
    window.addEventListener( 'scroll', function( event ) {
        if( !didScroll ) {
            didScroll = true;
            setTimeout( scrollPage, 250 );
        }
    }, false );
}



    function scrollPage() {
        var sy = scrollY();
        if  ( sy >= changeHeaderOn ) {
            classie.add( header, 'header-shrink' );
            classie.add( logo, 'logo-shrink' );
        }
        else {
            classie.remove( header, 'header-shrink' );
            classie.remove( logo, 'logo-shrink' );
        }
        didScroll = false;
    }



function scrollY() {
    return window.pageYOffset || docElem.scrollTop;
}

init();

})();

Я видел, как кто-то еще в StackOverflow задал аналогичный вопрос, но решение (if ($(window).width() > 768) {), которое ему было предоставлено, пока не работает, я уверен, что я неправильно применяю его.

Любая помощь будет принята с благодарностью :)

  • 0
    $(window).width() - это jQuery . jQuery - это библиотека JavaScript. Если вы не используете его, этот код ничего не сделает.
  • 1
    @PaulD.WaitePaulD.Waite, но выдает ReferenceError: $ is not defined
Показать ещё 2 комментария
Теги:

2 ответа

0
Лучший ответ

Причина

$(window).width()

не работает для вас, потому что он использует jQuery, который вы не используете.

Вместо этого используйте:

window.innerWidth

Итак, сделайте следующее:

if  ( sy >= changeHeaderOn && window.innerWidth > 768  ) {
    classie.add( header, 'header-shrink' );
    classie.add( logo, 'logo-shrink' );
}
  • 0
    Да, это довольно неловко, извиняюсь за недосмотр, попробую ваше предложение, спасибо :)
  • 0
    Найл, извините, новичок, я попробовал ваше предложение, но я не могу заставить его работать, размер заголовка и логотипа по-прежнему уменьшен до 768 пикселей. Как бы вы применили его к вышеуказанному сценарию?
Показать ещё 3 комментария
0

Попробуйте это js,

window.outerWidth,

Вы можете проверить все связанные с окном объекты через console.log (окно).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню