Slick - стрелки с названием предыдущего / следующего слайда - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь сделать стрелки с названиями предыдущих / следующих слайдов (используя данные att "data-slide-name"). Я искал inte rnet до конца и не нашел ничего, что мне было нужно. У меня есть один слайд (Имя 1), предыдущий слайд (Кошка), следующий слайд (Собака). Я хочу показать названия слайдов стрелками. Например, я прикрепляю код ручки (с s css):

https://codepen.io/michal-gajda/pen/MWwzvvp

HTML

<div class="slide">
    <div class="slide__title">
        <h2>Lorem ipsum</h2>
    </div>

    <div class="slide__items">
        <div class="slide__item" data-slide-name="Cat">
            <div class="slide__box">
                <div class="slide__inner">
                    <div class="slide__content">
                        <h3>Cat</h3>
                        <p>Lorem ipsum ..</p>
                    </div>
                </div>
            </div>
        </div>
        <div class="slide__item" data-slide-name="Name1">
            <div class="slide__box">
                <div class="slide__inner">
                    <div class="slide__content">
                        <h3>Name1</h3>
                        <p>Lorem ipsum.. </p>
                    </div>
                </div>
            </div>
        </div>
        <div class="slide__item" data-slide-name="Dog">
            <div class="slide__box">
                <div class="slide__inner">
                    <div class="slide__content">
                        <h3>Dog</h3>
                        <p>Lorem ipsum... </p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

JS

$('.slide__items').slick({
dots: false,
arrows: true,
infinite: true,
speed: 800,
slidesToShow: 1,
adaptiveHeight: true
});

S CSS

.slide {
padding: 0 20px;
background-color: #EEE8E2;

&__title {
    text-align: center;
    position: relative;
    padding-top: 70px;

    h1,
    h2,
    h3 {
        font-size: 30px;
        color: #7A6857;
        margin: 0;
        line-height: 1;
        letter-spacing: 0.1em;
    }
}

&__watermark-text {
    display: none;
    position: absolute;
    left: 0;
    top: 0;
    margin: 4% 0 0 -5%;

    svg {}
}

&__items {}

&__item {
    padding: 70px 20px 70px+20px+70px 20px;
    outline: transparent;
}

&__box {
    width: 100%;
    max-width: 800px;
    margin: 0 auto;
    box-shadow: 0px 13px 16px 6px rgba(149, 135, 121, 0.25);  
}

&__inner {
    display: flex;
    flex-wrap: wrap;
    background-color: white;
    position: relative;
    z-index: 10;
}

&__content {
    width: 43%;
    padding: 90px 60px;

    h1,h2,h3 {
       font-size: 24px;
       text-transform: uppercase;
       margin: 0 0 1em 0;
       letter-spacing: 0.1em;
       line-height: 1;
    }

    p {
        line-height: 1.4;
    }
}

&__img {
    width: 57%;
    background-position: 50%;
    background-size: cover;
}

&__buttons {
    font-size: 24px;
    margin-top: 0.7em;
}

&__btn {
    display: inline-block;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    padding: 0.75em 0;
    color: #B19777;
    transition: 0.3s;
    cursor: pointer;
    position: relative;
}

.slick-arrow {
    height: 100px;
    width: 200px;
    background: none;
    border: none;
    border-radius: 0;
    box-shadow: none;
    color: white;
    font-size: 22px;
    padding: 1em;
    font-weight: 600;
    text-transform: uppercase;
    background-color: #CEBDAD;
    outline: transparent;
    transition: 0.3s;

    position: absolute;
    top: calc(50% - 50px);
    z-index: 50;
    cursor: pointer;

    &:hover {
        background-color: #B19777;
    }
}

.slick-prev {
    left: -20px;
}

.slick-next {
    right: -20px;
}
}

1 Ответ

2 голосов
/ 26 марта 2020

Использование init afterChange событий

$('.slide__items').on('init afterChange', function(e, slick){
  let currentSlick = $('.slick-current.slick-active', slick.$slideTrack)
  let prevName = currentSlick.prev().data('slide-name')
  let nextName = currentSlick.next().data('slide-name')

  slick.$prevArrow.text(prevName)
  slick.$nextArrow.text(nextName)
});

Рабочая демонстрация

https://codepen.io/aswinkumar863/pen/abOQLVx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...