1. Web Design
  2. JavaScript

Cara Membuat Slider Split-Screen Dengan JavaScript

Scroll to top
Read Time: 3 min

() translation by (you can also view the original English article)

Dalam tutorial video hari ini, saya akan menunjukkan cara membuat elemen slider "split-screen" (atau UI, apa pun yang Anda inginkan untuk menyebutnya) dengan menggunakan JavaScript. Inspirasinya berasal dari halaman di situs Corsair; mari kita lihat bagaimana kita bisa membangun satu untuk proyek kita sendiri.

Apa yang Akan Kita Bangun

Mari kita lihat demo dari apa yang sedang kita bangun. Lihat proyek di CodePen, atau ambil file sumber dari GitHub.

Perhatikan Screencast

1. Bangun Panel Anda

Jadi bagaimana ini dilakukan? Mulailah dengan membangun dua panel terpisah dalam markup HTML Anda. Saya telah menggunakan dua elemen div dengan kelas panel. Yang pertama memiliki kelas tambahan bottom, yang lain kelas tambahan top. Masing-masing berisi div lain untuk membungkus isinya.

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>        

Letakkan konten apa pun yang Anda suka (gambar, judul, dsb.) di dalam div content.

Ketika selesai, tambahkan div baru, sebelum menutup tag splitview berfungsi sebagai handle.

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

2. Tambahkan Beberapa Style untuk Menumpuk Panel

Style penting pertama akan menumpuk dua panel di atas satu sama lain, memastikan bahwa mereka mengalir.

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
}

Gaya masing-masing panel- top dan bottom -berbeda, seperti memberi mereka background-color yang berbeda, dan beri style konten di dalamnya. Satu hal yang perlu diperhatikan adalah index-z masing-masing, untuk memastikannya menumpuk dengan urutan yang benar.

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. Terapkan Mask Sederhana

Kami sekarang memiliki panel top kami yang benar-benar menutupi yang ada di bawahnya, jadi mari bereksperimen dengan mengurangi lebarnya:

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

Seharusnya Anda mendapati hasil seperti ini, dengan panel top hanya mencapai bagian tengah (50vw) halaman:

4. Beralih ke JavaScript

Sekarang setelah kita menyelesaikan masalah dengan CSS, mari kita beralih ke JavaScript dan melihat apakah kita dapat menghidupkan efek sliding mask ini. Kami akan mulai dengan meminta browser untuk menjalankan sebuah fungsi, namun hanya sekali ketika DOM telah dimuat:

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

Sisa kode kita akan masuk ke dalam fungsi ini, di antara kurung kurawal.

Selanjutnya kita akan menetapkan beberapa variabel dengan mengambil elemen parent, panel top (yaitu satu-satunya yang akan kita ubah), dan elemen handle.

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

5. Membangun Handle

Sebelum melangkah lebih jauh, mari beri style pada handle.

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
}

Ini adalah bar kuning seluas 5px, menjalankan ketinggian wadah dan ditempatkan di tengah area. Ini memiliki z-index dari 3 untuk memastikannya berada di atas.

Buat Berpindah

Kami ingin mengambil koordinat x dari kursor mouse setiap kali kita memindahkannya ke dalam area. Kami kemudian ingin memindahkan handle dan mengatur lebar panel top sesuai dengan koordinat tersebut.

Kita mulai dengan event listener pada elemen parent, dan kemudian mengatur properti style left dari handle yang sama dengan nilai event.clientX .

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

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

Yang menangani handle kami yang bergerak, sekarang mari kita ubah ukuran panelnya, buat yagn sama dengan 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
});

Selesai!

Akhirnya mencapai akhir; dengan CSS dan JavaScript yang relatif mudah, kami telah menciptakan efek sliding mask split-screen yang brilian. Untuk mengambil lebih jauh, seperti yang saya lakukan di video, kita bisa membelokkan handle juga - lihat demo di CodePen untuk melihat bagaimana terlihat!

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.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.