Membuat Responsive dan Fleksibel Image Gallery

advertisement
Membuat Responsive dan Fleksibel Image
Gallery dengan JQuery Fleximage
Oleh: Christian Rosandhy
Siapa bilang bikin galeri gambar yang responsive itu susah? Di tutorial kali
ini kita akan belajar membuat galeri gambar yang tetap rapi, unik, dan
responsive sekalipun dengan ukuran gambar yang berbeda-beda lho.. Yuk
disimak aja gan~
Salam jagocoding,, di tutorial saya yang ke sekian kalinya ini saya akan berbagi teknik responsive
layouting yang dapat diterapkan pada kumpulan galeri anda di website. Adapun teknik responsive
layouting yang akan saya bagikan kali ini nggak begitu susah karena sudah dibantu oleh JQuery..
Kalau begitu, disimak aja step by stepnya ya~
Pertama-tama, seperti biasa siapkan folder project kita, jangan lupa download file JQuerynya dulu,,
dan
download
juga
JQuery
Flex
Image
di
https://github.com/Pixabay/jQuery-flexImages/archive/master.zip . Kalau sudah, kita siapkan juga
gambar-gambar yang akan kita masukkan di galeri kita. Akan lebih baik kalau jumlah gambarnya
ada banyak. Ini detail gambar-gambar yang akan saya pakai..
Kalau diperhatikan, gambar-gambar yang akan saya pakai itu dimensinya kebanyakan sih berbeda.
Ada yang dimensi 344 x 333px, ada yang 500 x 333 px, dsb.. Hal tersebut memang akan cukup
mengganggu kalau menggunakan teknik layouting galeri biasa, akan tetapi tidak untuk teknik
layouting responsive galeri yang akan kita coba sekarang.. Sekarang kita ke file HTMLnya dulu~
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Latihan Responsive Fluid Image Galleries</title>
<link rel="stylesheet" href="style.css"> <--disesuaikan dengan
lokasi CSS kita-->
</head>
<body>
<h1>Responsive Image Gallery</h1>
<!--class galery ini yang akan menampung semua gambar-gambar-->
<div class="galery flex-images">
<div class="item" data-w="344" data-h="333">
<a href="img/img01.jpg" target="_blank"><img
src="img/img01.jpg" alt=""></a>
</div>
<div class="item" data-w="500" data-h="333">
<a href="img/img02.jpg" target="_blank"><img
src="img/img02.jpg" alt=""></a>
</div>
<div class="item" data-w="500" data-h="333">
<a href="img/img03.jpg" target="_blank"><img
src="img/img03.jpg" alt=""></a>
</div>
<div class="item" data-w="500" data-h="333">
<a href="img/img04.jpg" target="_blank"><img
src="img/img04.jpg" alt=""></a>
</div>
<div class="item" data-w="348" data-h="333">
<a href="img/img05.jpg" target="_blank"><img
src="img/img05.jpg" alt=""></a>
</div>
<div class="item" data-w="500" data-h="281">
<a href="img/img06.jpg" target="_blank"><img
src="img/img06.jpg" alt=""></a>
</div>
<div class="item" data-w="500" data-h="333">
<a href="img/img07.jpg" target="_blank"><img
src="img/img07.jpg" alt=""></a>
</div>
<div class="item" data-w="274" data-h="371">
<a href="img/img08.jpg" target="_blank"><img
src="img/img08.jpg" alt=""></a>
</div>
<div class="item" data-w="483" data-h="500">
<a href="img/img09.jpg" target="_blank"><img
src="img/img09.jpg" alt=""></a>
</div>
<div class="item" data-w="500" data-h="333">
<a href="img/img10.jpg" target="_blank"><img
src="img/img10.jpg" alt=""></a>
</div>
</div>
<!--sesuaikan direktori jquery dengan milik anda sendiri-->
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript"
src="js/jquery.flex-images.min.js"></script>
</body>
</html>
Sekarang kita perhatikan struktur file HTMLnya dulu.. Tag yang paling mencolok itu dimulai dari
class .galery kebawah.. Class .galery akan bertindak sebagai penampung / container dari semua
gambar-gambar didalamnya. Class .item didalamnya adalah class yang akan dimanipulasi oleh
jquery fleximage nantinya. sedangkan isinya tag <a> dan <img> adalah isi kontennya.
Selain itu, di masing-masing class .item juga ada custom atribut tambahan yang wajib diisi, yaitu
data-w dan data-h. data-w kita isi dengan dimensi lebar gambar kita, dan data-h diisi dengan
dimensi tinggi gambar kita. Kalau dikerjain di halaman statis begini emang cukup ribet sih ngetikin
satu-satu, tapi kalau kita bekerja di web dinamis yang memanfaatkan database untuk menampung
data lebar, tinggi, dan lokasi gambar sih akan jauh lebih sederhana. Tapi buat latihan aja sekarang
nggak apa-apa lah~ :v
Langkah selanjutnya adalah menjalankan jquerynya. Kita sisipkan tag <script> lagi sebelum tag
penutup </body>
<script type="text/javascript">
$(".galery").flexImages({rowHeight:150});
</script>
seperti contoh diatas, parameter yang perlu kita isi cuma rowHeight aja. Isinya adalah ukuran pixel
tinggi gambar kita per barisnya. Bisa disesuaikan dengan kebutuhan kita nantinya.. Kalau sudah
sampai disini apakah sudah benar-benar selesai? Taraaaa~
What theeee .....?? Well,, kita emang belom ngurusin CSSnya sama-sekali sih.. :v Kalo gitu yuk kita
simak ke CSSnya ya sekarang~
*{margin:0px auto;}
html,body{height:100%; min-height:100%;}
.flex-images {overflow: hidden;}
.flex-images .item { float: left; margin: 10px; overflow: hidden; position:
relative;} /*margin bisa disesuaikan kebutuhan*/
.flex-images .item img { width: 100%; height: 100%; } /*trik membuat
gambar nggak keluar dari posisi yang seharusnya*/
Sampai disini, hasilnya udah asik nih..
Yeayy,, jadi deh kumpulan galeri gambar yang ukuran dimensinya beda-beda, tapi hasilnya tetep
rapi.. Layout ini responsive lho.. Mau diresize ukuran berapapun hasilnya masih akan tetap sangat
rapi. Sampai disini sebenarnya sudah selesai, tapi saya kasih bonus snippet deh biar galerinya bisa
lebih unik~
/*memberikan overlay hitam pada gambar dalam keadaan normal*/
.flex-images .item a::before{content:""; position:absolute; z-index:2;
width:100%; height:100%; background:rgba(0,0,0,.8); transition:0.3s;
-moz-transition:0.3s; -webkit-transition:0.3s; -o-transition:0.3s;}
/*menghilangkan overlay hitam ketika dihover*/
.flex-images .item:hover a::before{background:rgba(0,0,0,0);}
Kalau semua step by stepnya diikuti dengan tepat, pasti hasil jadinya akan seperti di halaman demo
saya ini.. http://tianrosandhy.com/demo/fleximages
Demikian tutorial saya kali ini~ semoga bisa dimengerti dan berguna buat kita semua..
Tentang Penulis
Christian Rosandhy
Download