Альтернатива $ (window) .scroll для мобильных устройств

0

У меня есть веб-страница с панелью навигации с вкладками, которая немного отличается от страницы. Страница реагирует, поэтому высоты и ширины окна могут быть изменены. Мой код отлично работает в среде рабочего стола, но когда я его $(window).scroll на свой iphone или ipad, функция $(window).scroll работает медленно. Я прокручу вниз, и только когда экран перестанет прокручиваться, произойдет моя функция. Это заставляет мою фиксированную навигационную задержку появляться или исчезать. Какие-либо предложения? Примеры образцов ниже:

HTML:

<div id="retail-nav">
                <div id="navwrap">
                    <ul>
                        <li id="retail-tab-1"><a class="active"><i class="icon-list-alt"></i> <?php the_field(tab_1);?></a></li>
                        <li id="retail-tab-2"><a><i class="icon-lock"></i> <?php the_field(tab_2);?></a></li>
                        <li id="retail-tab-3"><a><i class="icon-lightbulb"></i> <?php the_field(tab_3);?></a></li>
                    </ul>
                </div>
            </div>
            <div id="retail-nav-float">
                <div id="navwrap-float">
                    <ul>
                        <li id="retail-tab-1-float"><a class="active"><i class="icon-list-alt"></i> <?php the_field(tab_1);?></a></li>
                        <li id="retail-tab-2-float"><a><i class="icon-lock"></i> <?php the_field(tab_2);?></a></li>
                        <li id="retail-tab-3-float"><a><i class="icon-lightbulb"></i> <?php the_field(tab_3);?></a></li>
                    </ul>
                </div>
            </div>

JavaScript

var navHeight = jQuery('#retail-nav').offset().top;
                jQuery(window).scroll(function () {
                    if(jQuery(window).scrollTop() > navHeight) {
                        jQuery('#retail-nav-float').css('display', 'inline');
                    }else{
                        jQuery('#retail-nav-float').css('display', 'none');
                    }
                });

CSS:

 #retail-nav{
    width: 100%;
    height: 55px;
    background-color: #494949;
    overflow: hidden;
    position: relative;
}
#retail-nav-float{
    width: 100%;
    height: 55px;
    background-color: #494949;
    overflow: hidden;
    position: fixed;
    top:0;
    display: none;
}
#navwrap, #navwrap-float{
    height: 100%;
    width: 100%;
    max-width: 1012px;
    display: block;
    margin-left: auto;
    margin-right: auto;
    margin-top: -13px;
    text-align:center;
    line-height: 55px;
}

1 ответ

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

Для телефона и планшета вам придется добавлять события touchmove.

например

element.addEventListener("touchmove", touchMove, false);

Эта страница подробно рассказывает об этом: https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html

Я надеюсь, что это помогает вам!

  • 0
    Я пытался обернуть голову вокруг этого, но я не могу понять, как реализовать это как, который может эффективно заменить событие прокрутки на рабочем столе ...

Ещё вопросы

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