jQuery + скользкий слайдер: событие .on ('afterChange') запускается, но .fadeTo (1) из div иногда невидимо при перезагрузке страницы - PullRequest
1 голос
/ 24 сентября 2019

У меня есть скользящий слайдер с текстом поверх изображений на каждом слайде.Текст должен исчезнуть, когда текущий слайд имеет класс .slick-active .Затем, когда слайд больше не имеет класса .slick-active , текст должен стать невидимым, а текст на следующем слайде должен постепенно исчезать и так далее каждый раз, когда слайдер меняет текущий слайд.Когда страница загружается в первый раз, кажется, что все работает нормально и как и ожидалось.Проблема заключается в том, что при перезагрузке страницы или если кто-то посещает другую страницу и затем возвращается на страницу слайдера, текст на первом слайде постепенно исчезает, как и ожидалось, но не на других слайдах.Кажется, что происходит событие .on ('afterChange') , потому что при использовании Chrome Dev Tools видно, что jQuery изменяет непрозрачность с 0 до 1 с помощью .fadeTo (1) ,однако текст не виден.Но если перезагружать достаточно раз, текст исчезает, как и ожидалось.Также, если изменить размер окна браузера, текст становится видимым при определенном размере браузера, но при других размерах браузера текст исчезает.Мне кажется, что-то не так с самой JQuery, но я не уверен.

Редактировать: это странное поведение происходит только при использовании Google Chrome или Opera (в Opera текст отображается только на первом слайде, даже если это первая загрузка страницы),кажется, работает нормально и, как и ожидалось, в Safari и Mozilla Firefox.Так какая-то ошибка Google Chrome / Opera + jQuery?

Если кто-то может помочь, это будет высоко ценится!

HTML :

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Lazzo</title>
        <link rel="stylesheet" type="text/css" href="css/normalize.css">
        <link rel="stylesheet" type="text/css" href="css/style.css">
        <link rel="stylesheet" type="text/css" href="css/bars.css">
        <link rel="stylesheet" type="text/css" href="slick/slick.css"/>
        <link rel="stylesheet" type="text/css" href="slick/slick-theme.css"/>
        <link rel="stylesheet" type="text/css" href="css/custom-slick.css">
        <link rel="stylesheet" type="text/css" href="css/animate.css">
        <link rel="stylesheet" href="https://use.typekit.net/jqi8pst.css">
    </head>

    <body>
        <div class="container">
            <header>                    
                <div class="white logotype">
                    <a href="index.html">
                        <svg class="logotype-is-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 312.68 110.26"><path d="M19.91,91.14a2.38,2.38,0,1,0,0-4.75c-14.1,0-14.1-7.75-14.1-14v-70a2.38,2.38,0,1,0-4.76,0v70C1.05,78.49,1.05,91.14,19.91,91.14Z"/><path d="M55,51.78c-7.29,0-13.25,1.16-17.71,3.45C30.71,58.63,26.91,64.88,27.15,72c.24,7.3,4.85,13.75,12,16.85A41,41,0,0,0,55.6,91.94c6.92,0,15.92-.91,22-4.92a9.13,9.13,0,0,0,8.06,4.14,2.38,2.38,0,1,0,0-4.76c-3.3,0-5-1.92-5-5.71V46.26c0-7.1-4.37-12.77-12.29-16-13.7-5.54-30.34-1.57-37.28,5.62a2.38,2.38,0,0,0,.05,3.36,2.42,2.42,0,0,0,1.7.67,2.36,2.36,0,0,0,1.67-.73C41,32.51,56,30.4,66.61,34.69c3.48,1.41,9.32,4.78,9.32,11.57v5.52Zm21,30.5c-5.2,4.24-14.92,4.91-20.43,4.91a36.31,36.31,0,0,1-14.53-2.75c-5.47-2.36-9-7.21-9.17-12.65a13.25,13.25,0,0,1,7.59-12.33c3.78-1.94,9-2.93,15.54-2.93h20.9V80.69A13.57,13.57,0,0,0,76,82.28Z"/><path d="M97.45,33.69h39.09l-41,53.63a2.37,2.37,0,0,0,1.88,3.82h43.89a2.38,2.38,0,1,0,0-4.75H102.26l41-53.64a2.37,2.37,0,0,0-1.89-3.81H97.45a2.38,2.38,0,0,0,0,4.75Z"/><path d="M157.6,33.69h39.08l-41,53.64a2.37,2.37,0,0,0,1.9,3.81h43.88a2.38,2.38,0,1,0,0-4.75H162.4l41-53.64a2.37,2.37,0,0,0-1.9-3.81H157.6a2.38,2.38,0,1,0,0,4.75Z"/><path d="M262.85,10.6a49.83,49.83,0,0,0-21.28,94.9H2.38a2.38,2.38,0,1,0,0,4.75H262.85a49.83,49.83,0,0,0,0-99.66Zm.06,94.9h-.4a45.21,45.21,0,1,1,.4,0Z"/></svg>
                    </a>
                </div><!-- /logotype -->

                <div class="bars bars--slider">
                    <div class="bars-box">
                        <div class="white bars-inner">
                        </div><!-- /bars-inner -->
                    </div><!-- /bars-box -->
                </div><!-- /bars bars--slider -->
            </header>

            <nav class="menu">
                <ul>
                    <li>
                        <a href="cases.html">CASE</a>
                    </li>

                    <li>
                        <a href="about.html">OM</a>
                    </li>

                    <li>
                        <a href="contact.html">KONTAKT</a>
                    </li>
                </ul>

                <footer>
                    <div class="contact">
                        <a href="tel:+46500494343">0500 &ndash; 49 43 43</a>

                        <div class="contact-divider">
                            &nbsp;&verbar;&nbsp;
                        </div><!-- /contact-divider -->

                        <a href="mailto:info@lazzo.nu">info@lazzo.nu</a>
                    </div><!-- /contact -->
                </footer>
            </nav>

            <div class="fullscreen content-slider big">
                <div>
                    <div class="overlay">
                        <div class="heading-one">
                            <h3>Jönköpings Länstrafik</h3>

                            <h1>Världsnyheten i Värnamo</h1>

                            <a class="white" href="case.html">Se case</a>
                        </div><!-- /heading-one -->
                    </div><!-- /overlay -->

                    <img src="img/vasttrafik.jpg" alt="Västtrafik">
                </div>

                <div>
                    <div class="overlay">
                        <div class="heading-one">
                            <h3>Hotell Kungshamn</h3>

                            <h1>Omprofilering</h1>

                            <a class="white" href="case.html">Se case</a>
                        </div><!-- /heading-one -->
                    </div><!-- /overlay -->

                    <img src="img/hotellkungshamn.jpg" alt="Hotell Kungshamn">
                </div>

                <div>
                    <div class="overlay">
                        <div class="heading-one">
                            <h3>AH Automation</h3>

                            <h1>Robotmässa</h1>

                            <a class="white" href="case.html">Se case</a>
                        </div><!-- /heading-one -->
                    </div><!-- /overlay -->

                    <video autoplay loop muted>
                        <source src="video/ahautomation.mp4" type="video/mp4">
                    </video>
                </div>
            </div><!-- /fullscreen content-slider -->
        </div><!-- /container -->

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
        <script src="js/custom-slick.js"></script>
        <script src="js/white-bars.js"></script>
        <script src="slick/slick.js"></script>
    </body>
</html>

jQuery:

$(document).ready(function(){
    $('.big').on('init', function(event, slick){
        $('.slick-active .heading-one').delay(500).fadeTo(300, 1);
    });

    $('.big').on('reInit', function(event, slick){
        $('.slick-active .heading-one').delay(500).fadeTo(300, 1);
    });

    $('.big').on('beforeChange', function(event, slick, currentSlide, nextSlide){
        $('.slick-active .heading-one').css('opacity', '0');
    });

    $('.big').on('afterChange', function(event, slick, currentSlide){
        $('.slick-active .heading-one').fadeTo(300, 1);
    });

    //slick
    $('.big').slick({
        autoplay: false,
        prevArrow: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.1 25.71" class="slick-prev"><polygon points="12.4,25.5 13.8,24.1 3,12.9 13.8,1.6 12.4,0.2 0.3,12.9 "/></svg>',
        nextArrow: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.1 25.71" class="slick-next"><polygon points="1.7,25.5 0.3,24.1 11.1,12.9 0.3,1.6 1.7,0.2 13.8,12.9 "/></svg>',
        fade: true,
        pauseOnFocus: false,
        pauseOnHover: false,
        speed: 700,
    });

    $('.small').slick({
        prevArrow: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.1 25.71" class="slick-prev"><polygon points="12.4,25.5 13.8,24.1 3,12.9 13.8,1.6 12.4,0.2 0.3,12.9 "/></svg>',
        nextArrow: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.1 25.71" class="slick-next"><polygon points="1.7,25.5 0.3,24.1 11.1,12.9 0.3,1.6 1.7,0.2 13.8,12.9 "/></svg>',
        pauseOnFocus: false,
        pauseOnHover: false,
        slidesToShow: 3,
        slidesToScroll: 1,
        speed: 700,
        responsive: [
            {
                breakpoint: 1114,
                settings: {
                    slidesToShow: 2,
                }
            },

            {
                breakpoint: 784,
                settings: {
                    slidesToShow: 1,
                }
            },
        ],
    });

});

1 Ответ

0 голосов
/ 24 сентября 2019

Я думаю, вы, вероятно, немного усложняете это;желаемое поведение может быть достигнуто без дополнительного JavaScript:

.heading-one {
    opacity: 0;
    transition: opacity .3s;
}

.slick-active .heading-one {
    opacity: 1;
}
...