Advertisement
  1. Web Design
  2. JavaScript

Как создать сплитскрин слайдер при помощи JavaScript

Scroll to top
Read Time: 3 min

Russian (Pусский) translation by Alex Bogdanov (you can also view the original English article)

Сегодня в видеоруководстве я покажу вам как создать "сплитскрин" слайдер, используя JavaScript. Вдохновением послужила страница с Corsair website; давайте посмотрим, как мы можем создать свой собственный слайдер.

Что мы будем делать

Давайте посмотрим на демо того, что мы будем делать. Посмотрите на проект на CodePen, либо скачайте исходники с GitHub.

Посмотрите видео

1. Создаем панели

Как это сделать? Создайте две отдельные панели в вашем HTML. Я использовал div элемент с классом panel. У первой панели задал также класс bottom, у другой – top. В каждой панели также есть еще один div для контента.

1
<div class="splitview">
2
    <div class="panel bottom">
3
        <div class="content">
4
        
5
        </div>
6
    </div>   
7
    <div class="panel top">
8
        <div class="content">
9
        
10
        </div>
11
    </div>    
12
</div>        

Поместите ваш контент (изображения, заголовки и т.д.) в div с классом content.

Как только сделаете, добавьте еще один div в качестве переключателя перед закрывающим тегом splitview.

1
<div class="handle"></div>

2. Добавьте стилей для расположения панелей

Первыми важными стилями будут те, которые разместят наши панели одну над другой, а также сделают их подвижными.

1
/* Panels. */
2
.splitview {
3
    position: relative;
4
    width: 100%;
5
    min-height: 45vw;
6
    overflow: hidden;
7
}
8
9
.panel {
10
    position: absolute;
11
    width: 100vw;
12
    min-height: 45vw;
13
    overflow: hidden;
14
}

Задайте стили каждой панели отдельно – для top и bottom, например задав background-color и украсьте их внутри как захотите. Стоит только помнить о z-index, чтобы расположить их в правильном порядке.

1
.bottom {
2
    background-color: rgb(44, 44, 44);
3
    z-index: 1;
4
}
5
6
.top {
7
    background-color: rgb(77, 69, 173);
8
    z-index: 2;
9
}

3. Примените простую маску

Теперь наша верхняя панель полностью перекрывает нижнюю, так что давайте поэкспериментируем с шириной:

1
.top {
2
    background-color: rgb(77, 69, 173);
3
    z-index: 2;
4
    width: 50vw;
5
}

У вас должно получиться что-то похожее верхняя панель будет достигать не более половины (50vw) страницы:

4. Подключаем JavaScript

Теперь, когда все работает в нашем CSS, давайте займемся JavaScript и посмотрим, как мы сможем анимировать наш слайдер. Начнем с запуска функции только при полной загрузке DOM.

1
document.addEventListener('DOMContentLoaded', function() {
2
    
3
});

Весь остальной код будет находиться внутри этой функции, внутри скобок.

Затем обозначим переменные, указав родительский элемент, верхнюю панель (она единственная у нас будет изменяться) и элемент, который будет происходить смена.

1
    var parent = document.querySelector('.splitview'),
2
        topPanel = parent.querySelector('.top'),
3
        handle = parent.querySelector('.handle'),

5. Делаем переключатель

Прежде чем приступить, давайте зададим стили переключателю.

1
/* Handle. */
2
.handle {
3
    height: 100%;
4
    position: absolute;
5
    display: block;
6
    background-color: rgb(253, 171, 0);
7
    width: 5px;
8
    top: 0;
9
    left: 50%;
10
    z-index: 3;
11
}

Это небольшой блок в 5pxпомещенный в середину видимой области. Его z-index – 3, убедитесь, что он находится на самом верху.

Заставляем его перемещаться

Мы хотим заполучить координаты курсора мыши по оси x, когда она перемещается внутри контейнера. Затем мы хотим, чтобы переключатель перемещался и задавал ширину верхней панели сообразно этим координатам.

Начнем с приемника событий на родительском элементе, затем установим свойство left нашего переключателя равным значению event.clientX.

1
parent.addEventListener('mousemove', function(event) {
2
        // Move the handle.

3
        handle.style.left = event.clientX + 'px';
4
});

Этот код позаботится о перемещении переключателя, теперь давайте займемся размерами панели, приравняв их к event. clientX.

1
parent.addEventListener('mousemove', function(event) {
2
        // Move the handle.

3
        handle.style.left = event.clientX + 'px';
4
5
        // Adjust the top panel width.

6
        topPanel.style.width = event.clientX + 'px';
7
});

Готово!

Мы подошли к концу; при помощи такого простого CSS и JavaScript мы создали прекрасный эффект сплитскрин слайдера. Чтобы сделать все еще лучше, чем я занимаюсь в видео, мы можем изменить и сам переключатель – взгляните на демо на CodePen!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.