Unlimited Wordpress themes, plugins, graphics & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Web Design
  2. jQuery

Bagaimana Membangun Galeri Gambar Responsif yang Atraktif dengan slick.js

by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Fitryan Wisnu Pratama (you can also view the original English article)

Dalam tutorial ini kita akan menggunakan slick.js, sebuah plugin jQuery yang populer, membangun galeri foto responsif yang atraktif. Berikut adalah galeri yang akan kita buat:

Pastikan untuk memeriksa versi layar penuh dan mengubah ukuran jendela browser Anda untuk melihat bagaimana tata letak perubahan tergantung pada ukuran viewport.

Apa itu slick.js?

Slick.js adalah sebuah plugin jQuery populer yang dibuat oleh Ken Wheeler yang memungkinkan Anda untuk membangun carousel responsif yang indah. Untuk lebih memahami apa yang ditawarkan oleh plugin ini, mari lihat dokumentasinya.

Untungnya, slick.js bekerja tidak hanya di semua browser modern, tetapi juga di beberapa yang lebih tua seperti IE 8+.

Terakhir, Anda mungkin juga ingin melihat versi WordPress nya.

Persiapan memulai dengan slick.js

Untuk memulai dengan slick, mulai dengan men-download dan menginstal file-file berikut dalam proyek Anda:

  • jQuery (≥1.7)
  • slick.css atau versi minified
  • slick.js atau versi minified

Opsional, Anda mungkin ingin mengimpor file slick-theme.css.

Anda dapat mengambil salinan file slick dengan mengunjungi repo Github nya, dengan menggunakan manajer paket (misalnya npm), atau dengan memuat aset yang diperlukan melalui CDN (misalnya cdnjs). Untuk tutorial ini, saya akan memilih pilihan terakhir.

Selain itu, saya telah memasukkan Babel untuk mengkompilasi kode ES6 menjadi ES5 dan Lodash untuk memanfaatkan fungsi debounce (kita akan menggunakan yang kemudian).

Dengan itu, jika Anda melihat di bawah tab Settings demo pen kami, Anda akan melihat bahwa saya telah menyertakan satu eksternal file CSS dan tiga file JavaScript eksternal.

CSS settings on CodePen
Pengaturan CSS pada CodePen
JavaScript settings on CodePen
Pengaturan JavaScript pada CodePen

1. HTML

Pada titik ini, penting untuk memahami struktur halaman website kita. Yang terpenting, kita akan menentukan dua carousel yang memiliki gambar yang sama persis dan disinkronkan (kita akan membahas bagaimana nanti). Dimensi gambarnya adalah 860 x 550 piksel, meskipun dalam proyek Anda sendiri, ini mungkin berbeda.

Terakhir, sebagai bagian dari carousel kedua kita akan menentukan navigasi panah serta elemen yang terus melacak jumlah slide.

Berikut adalah struktur yang diperlukan untuk halaman demo kita:

2 CSS.

Secara total, Galeri kita harus memiliki empat tampilan yang berbeda, tergantung pada viewport yang tersedia. Mari kita membayangka nya dengan mengikuti pendekatan mobile-first.

Saat jendela browser adalah kurang dari 480px, seharusnya terlihat seperti ini, dengan hanya carousel kedua dan navigasi yang muncul:

The carousel layout on extra small screens
Tata letak carousel pada layar ekstra kecil

Kemudian, pada layar antara 480px dan 768px, harus seperti berikut ini, dengan dua thumbnail di bawah slide utama:

The carousel layout on small screens
Tata letak carousel pada layar kecil

Selanjutnya, pada layar antara 769px dan 1023px, kami akan memunculkan thumbnail ketiga:

Terakhir, pada layar besar (≥1024px), harus sebagai berikut, dengan thumbnail muncul ke sisi (perhatikan bahwa mereka tidak begitu pas pada gambar ini secara keseluruhan):

The carousel layout on large screens
Tata letak carousel pada layar besar

Semua kasus di atas dilayani dalam media queries yang ditunjukkan di bawah ini:

Perhatikan ada aturan !important. Ini akan menimpa style inline slick.

3 JavaScript.

Sekarang mari kita perhatikan hal-hal yang berhubungan dengan JavaScript.

Caching Selectors

Ketika DOM sudah siap, sebagai praktik yang tepat kita cache beberapa selector yang umum digunakan:

Inisialisasi Carousels

Kemudian, kami menginisialisasi dan mensinkronisasi kedua carousels. Kode yang digunakan dalam langkah ini adalah sebagai berikut:

Tanpa diragukan lagi, cara terbaik untuk memahami bagaimana kode bekerja adalah untuk membaca dokumentasi slick. Namun, saya akan menjelaskan dua hal penting berikut ini:

  • Opsi konfigurasi asNavFor memungkinkan kita untuk mensinkronisasi carousel dan menggunakan salah satu nya sebagai navigasi untuk yang lain.
  • Secara default, slick menggunakan CSS transformasi. Dalam kasus ini, kita menonaktifkan mereka dengan menetapkan useTransform: false. Hal ini dikarenakan mereka menyebabkan gangguan kecil di slide pertama pada carousel pertama saat dibuka di layar besar (kita bisa menonaktifkan mereka hanya pada carousel pertama).

Menampilkan dan Menyesuaikan Tata Letak Galeri

Galeri kita seharusnya terlihat hanya ketika semua halaman aset siap. Pada awalnya, preloader opsional muncul-lihat kembali markup, tampak seperti ini:

Pada titik ini, kita harus berpikir lagi tentang tata letak galeri yang diinginkan pada layar besar. Jika Anda melihat kembali screenshot yang sesuai, Anda akan melihat bahwa kedua carousel memiliki tinggi yang sama. Untuk mencapai perilaku yang diinginkan, kita harus menulis beberapa kode JavaScript khusus (di luar CSS kami). Kode ini akan secara dinamis mengatur ketinggian carousel pertama sama dengan tinggi yang kedua (atau sebaliknya).

Mengetahui persyaratan di atas, berikut adalah kode yang berjalan ketika seluruh halaman siap:

Dan ini adalah deklarasi fungsi handleCarouselsHeight:

Ketika halaman load, galeri bekerja baik. Tapi juga harus bekerja seperti yang diharapkan ketika jendela browser akan diubah ukurannya.

Kode yang berkaitan dengan situasi tersebut ditunjukkan di bawah ini:

Perhatikan bahwa event handler dibungkus dalam fungsi debounce. Ini adalah fungsi Lodash yang membantu kita membatasi jumlah berapa kali handler ini dipanggil.

Bekerja dengan slick Events dan Methods

Sekarang kita telah berhasil menerapkan fungsi utama dari Galeri kita, mari kita melompat satu langkah lebih lanjut dan membangun beberapa hal opsional.

Pertama, di sudut kanan atas dari carousel kedua kita tampilkan slide saat ini dan jumlah slide.

Displaying the current slide and the total number of slides
Menampilkan slide saat ini dan jumlah slide

Untuk mencapai hal ini, kita memanfaatkan init dan afterChange slick events.

Berikut adalah kode yang terkait:

Sebagai perbaikan lebih lanjut, setiap kali kita klik pada slide carousel pertama , slide terkait pada carousel kedua harus aktif. Berkat metode slickGoTo, kita sudah mampu mengembangkan fungsi ini.

Berikut adalah kode yang terkait:

4. Browser Support

Demo harus bekerja dengan baik di semua browser dan Anda dapat dengan aman menggunakannya dalam proyek Anda.

Saya hanya menemukan satu bug kecil di beberapa browser (Firefox, Edge) saat menguji demo di layar besar. Saat Anda mengklik panah navigasi, semua slide carousel pertama terlepas dari yang pertama, gagal mencapai tepi atas induknya dan meninggalkan satu celah piksel:

Slick leaves one pixel bug on some browsers
Bug satu piksel Slick pada beberapa browser

Last but not least, perbaikan kecil dan kustomisasi mungkin diperlukan karena jendela akan diubah ukurannya, tergantung pada kebutuhan Anda.

Kesimpulan

Dalam tutorial ini, kita memanfaatkani slick.js dan berhasil membangun sebuah galeri responsif yang indah. Mudah-mudahan sekarang, Anda siap untuk mencoba pelaksanaan ini dalam proyek Anda sendiri. Jika itu terjadi, jangan ragu untuk berbagi link proyek Anda di komentar di bawah ini!

Proyek JavaScript Lain untuk Mempercantik Website Anda

Advertisement
Advertisement
Advertisement
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.