Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Membuat Navigasi Bergerak Yang Keren Dengan CSS dan jQuery

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Yosef Andreas (you can also view the original English article)

Animasi dan feedback visual merupakan cara bagus untuk mendampingi pengguna dalam navigasi dan berinteraksi dengan sebuah website. Sementara secara tradisional Adobe Flash merupakan tujuan untuk animasi apapun, sekarang ini dengan keajaiban javascript kita dapat menghindari Flash. Hari ini kita akan membuat menu navigasi bergerak yang sangat keren hanya dengan menggunakan CSS dan jQuery.

Demo dan Source Code


Ikhtisar

Menu yang sedang kita buat dapat dilihat di dalam screenshot di bawah. Kamu juga dapat melihat versi akhirnya di sini.

Saya akan memecah tutorial ini ke dalam lima bagian sebagai berikut:

  • Sketsa kasar
  • Membuat Sumber
  • Menuliskan HTML
  • Menuliskan CSS
  • Membuat animasi dengan menggunakan jQuery

Langkah 1: Sketsa Kasar

Pertama-tama mari kita lihat apa yang perlu kita lakukan di sini.

Jadi berikut ide kasar mengenai apa yang seharusnya kita lakukan:

  • Kita akan memecah halaman ke dalam 4 bagian, header, navigasi dan header konten dan sisa konten.
  • Area header akan berupa kontainer <div> sederhana
  • Area navigasi akan dipecah ke dalam beberapa kontainer <div> yang disesuaikan dengan item menu.
  • Sekarang kebanyakan waktu kita menggunakan kontainer <ul><li> namun karena setiap menu itu unik,
    Saya tidak melihat keuntungan menggunakan <ul><li> sehingga sebagai gantinya saya  akan menggunakan kontainer <div>.

  • Konten akan berupa kontainer <div> sederhana

Jadi untuk menyimpulkannya

Itu mungkin membantu untuk menunjukkan struktur direktori. Struktur direktori adalah sebagai berikut:

Langkah 2: Sumber

Saya menganggap kamu memiliki pengetahuan dasar dalam menggunakan Photoshop, sehingga saya tidak akan memberikan instruksi yang terlalu detail dalam membuat sumber.
Ada beberapa hal yang perlu kita buat.

  • Background Header
  • Judul Konten
  • Navigasi
  • Strip background

Perhatikan bahwa jika kamu ingin melewatkan langkah ini kamu dapat mengunduh file zip utuh di akhir tutorial dan mengekstrak salinan saya!

Oke, mari membuat background header. Buka Photoshop dan buat kanvas 1x181 px, atau kamu dapat membuatnya lebih besar dan kemudian memotong gambar.
Buat sebuah layer dan berikan gradien linier dengan preset Foreground to Background untuk 171px, ini akan menjadi gradien utama.
Buat layer lainnya dan berikan itu gradien linier dengan preset Foreground to Background sekitar 10px di bawah layer pertama untuk beberapa efek bayangan.

Berikut merupakan tampak seharusnya, itu 100x181 px yang nantinya saya crop menjadi 1x181 px.

Simpan ini sebagai 'hdr-bkg.png' di dalam folder 'img'.

Berikutnya, kita akan membuat judul konten. Sekali lagi, buka Photoshop dan buat 934x284 px.
Buat persegi panjang melengkung dengan menggunakan tool yang sesuai, pilih buat yang dibuat, buat sebuah layer baru, tambahkan gradien dan beri itu beberapa drop shadow.
Maka kita akan mendapatkan sesuatu seperti ini:

Simpan ini sebagai 'content-title.png' di dalam folder 'img'.

Sekarang mari kita buat sumber yang diperlukan oleh navigasi. Kita memerlukan dua set navigasi dan kotak putih.

Kotak putihnya sederhana. Buat sebuah persegi panjang melengkung sekitar 98px x 58px dan lukis itu dengan warna putih. Pastikan bahwa background transparan.

Simpan ini sebagai 'white.jpg' di dalam folder 'img'.

Untuk item navigasi, buka Photoshop dan buat dokumen 490px x 58px.
Buat sebuah persegi panjang melengkung dengan sekitar 98px x 58px dan buat beberapa teks di dalamnya. Kita akan memerlukan dua salinan untuk tiap teks.
Saya menerapkan sedikit drop shadow pada tiap teks, namun tentu saja ini opsional. Kamu dapat memilih warnamu sendiri untuk ditempatkan di sini.

Sekarang duplikasikan layer ini sepanjang garis horizontal. Terapkan warna dan teks yang berbeda.

Simpan ini sebagai 'nav.jpg' di dalam folder 'img'.

Terakhir, untuk strip background saya menggunakan sebuah online tool bernama the Stripe Generator. Outputnya tampak seperti ini:

Kamu dapat melihat pengaturan saya di sini.
Tentu saja kamu dapat membuat strip sendiri dalam Photoshop, namun mengapa tidak menggunakan web tool kecil yang rapi :-)

Langkah 3: kode HTML

Sekarang mari kita catat HTML kita.

Ini cukup banyak berdasarkan pada rencana kita yang dijelaskan dalam Langkah 1

Saya telah menambahkan tautan ke file 'main.css' yang belum dibuat dan
Saya juga telah menambahkan beberapa referensi pada beberapa file javascript. Karena tiap item navigasi itu unik saya telah memberikan ID untuk masing-masing item.
Kita akan tetap memerlukan beberapa style umum pada tiap item menu, ini akan membuatnya mudah bagi kita untuk mengelola style dalam tahap nantinya.

Kita juga akan memiliki sebuah kotak putih di atas tiap item navigasi, ketika kita mengarahkan pada menu atau item yang sedang dipilih, sehingga kita akan menambahkan kontainer <div> lainnya untuk itu. HTML akhir akan tampak seperti ini:

Simpan ini sebagai 'index.html'. Hingga pada titik ini kita memiliki ini sebagai halaman HTML kita:

Langkah 4: CSS

Mari kita terapkan beberapa style dasar pada halaman Web. Kita akan mulai dengan menentukan background dan menambahkan area header.

Simpan ini sebagai ‘main.css’ di dalam 'css'.

Sekarang kita memiliki sesuatu yang tampak seperti:

Sekarang mari tambahkan style pada tiap item menu. Ingatlah kita ingin kotak putih pada bagian atas tiap item menu,
sehingga position harus diatus ke absolute. Tambahkan style berikut di dalam file 'main.css'.

Sekarang kita memiliki:

Satu masalah, tautan <a href> muncul di atas item menu, mari hapus itu dengan indentasi teks yang besar - secara efektif mengambil itu keluar layar.
Tambahkan ini ke style sheet.

Sekarang itu akan tampak seperti ini:

Kita masih memiliki satu masalah, kita menginginkan menu navigasi muncul di bawah bayangan header. Kita bisa mencapai itu dengan memodifikasi header style kita.

Sekarang karena kita menggunakan file .png dengan transparansi, itu harusnya tampak seperti ini:

Sempurna! Mari tambahkan konten sehingga kita bisa mendapatkan script animasi kita.

Langkah 5: Script animasi

Pertama-tama mari unduh script jQuery terbaru dan tempatkan itu di dalam folder 'js'.

Animiasi ini pada dasarnya adalah sebuah manipulasi style background position.
Sayangnya jQuery memiliki bug dalam menggerakkan style background position. Namun jangan khawatir! Alexander Farkas telah membuat sebuah plugin yang menyelesaikan masalah ini.
Download file dan namai ulang menjadi jquery-bp.js dan simpan itu di dalam 'js'.

Ada sesuatu yang perlu kita mengerti sebelum melanjutkan. Saya mengutip dari dokumentasi plugin:

Dikarenakan beberapa bugs pada browser (yaitu Firefox, kamu harus mengatur (initial) background-position inline:
<div style="background-position: 10px 20px"></div>
- Tentu saja kamu dapat mencapai ini dengan JavaScript (jQuery):
$('#background').css({backgroundPosition: '10px 20px'});

Oke sekarang setelah kita mengerti itu, mari kita mulai. Kita akan mengatur style background position untuk setiap item di dalam awal script.

Simpan ini sebagai 'navigation.js' di dalam folder 'js'.

Sekarang kita akan mengikat 3 event pada tiap item menu. Kita dapat melakukan ini dengan memicu fungsi bind.

Kapanpun pengguna mengarahkan pada item navigasi script kita akan memanggil fungsi 'mMouseOver'.
Ketika pengguna mengarahkan item navigasi script kita akan memanggil fungsi 'mMouseOut'.
Dan ketika pengguna mengklik item navigasi, script kita akan memanggil fungsi 'mClick'

Langkah 5.1: Mouse over

Mari membuat sebuah "papan cerita" untuk animasi mouse over.

Pada 'Mouse Over':

  • Mengubah gambar menu navigasi (pendar) dan mengubah kursor menjadi pointer.
  • Navigasi akan bergerak sedikit ke atas.
  • Kotak putih akan bergerak ke bawah.
  • Baik kotak putih dan menu navigasi akan turun.
  • Menu navigasi dan kotak putih akan bergerak ke atas hingga posisi akhirnya.
  • Dan mengubah gambar menu navigasi ke keadaan aslinya.

Oke mari tambahkan fungsi berikut di bawah script sebelumnya:

Saya perlu menjelaskan beberapa hal di sini:

  1. _getHPos digunakan untuk menyesuaikan navigasi horizontal background position untuk tiap item.
    Sebagai contoh, background item ‘Home’ akan mulai dari 0, horizontal background position pada ‘About’ dimulai dari -98px, dan sebagainya.
  2. Juga sadari bahwa di awal fungsi kita memicu fungsi 'stop'. Kita melakukan ini untuk memastikan animasi apapun yang berjalan sebelum event 'mouse over' telah berhenti.
    Mengapa? Kita akan menambahkan animasi nantinya untuk event 'mouse out'.
    Sekarang mari bayangkan pengguna mengarahkan pada sebuah item dan kemudian memindahkan pointer mouse dengan cepat ke tempat lainnya dan kembali lagi ke item yang sama secara cepat.
    Jika kita tidak menghentikan animasi sebelum tiap event, akan ada penundaan karena beberapa bagian animasi akan mengantri atau bahkan lebih buruk lagi akan menjadi tidak konsisten dan mengganggu pengguna.

Langkah 5.2: Mouse out

Sekarang itu selesai. Mari membuat "papan cerita" untuk event 'mouse out'.

Pada 'Mouse Out':

  • Menurunkan item navigasi.
  • Memindahkan kotak putih ke bawah.
  • Memindahkan navigasi ke atas.
  • Menaikkan item navigasi dari posisi aslinya.
  • Memindahkan kotak putih ke posisi aslinya (tidak terlihat).
  • Mengembalikan kursor ke normal.

Kode:

Langkah 5.3: Click

Hampir selesai! Sekarang kita perlu menangani ketika pengguna mengklik item navigasi.

Tentu saja kamu dapat mengarahkan ke lokasi manapun yang kamu rasa cocok. Fungsi khusus ini akan mengarahkan browser ke [current_url]/[navigation_id] sehingga untuk ‘home’ itu akan menjadi ‘[current_url]/home’, untuk ‘about’ itu akan menjadi ‘[current_url]/about’ dan sebagainya.

Langkah 5.4: Indikator halaman terkini

Tentu saja kita memerlukan sebuaih indikator ketika kita sudah berada dalam halaman. Untuk itu kita memerlukan CSS class lainnya.
Kita akan menyebut class tersebut ‘active’. Sebagai contoh jika kita sekarang berada di 'home' file HTML akan menjadi:

Atau jika kita di 'about' itu akan menjadi:

dan sebagainya.

Jadi sekarang idenya setelah sebuah halaman dimuat script kita akan memeriksa untuk melihat item navigasi yang mana yang memiliki class 'active'.
Lalu kita menerapkan efek animasi. Dan kita perlu memastikan event lainnya ( ‘mouseover’, ‘mouseout’, ‘click’) tidak akan menyebabkan efek animasi pada item 'active' ini.

Untuk itu kita perlu sedikit mengubah kode. Berikut kode lengkap setelah perubahan:

Selesai!

Dan dengan itu kita mendapatkan menu kecil yang berguna.

Download ZIP pada Situs

Lihat Demo!

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.