Monday, October 7, 2013

Efek Masonry Hanya dengan CSS

CSS3 Masonry Layout

Teknik ini sudah pernah dibahas dengan cukup detail di CSS-Tricks. Hanya saja Saya tidak habis pikir mengapa beliau tetap mempertahankan deklarasi column-count untuk memecah area menjadi beberapa kolom dan menggunakan media queries untuk mengurangi jumlah kolom pada saat ukuran layar peramban menyempit. Padahal jika kita sudah menentukan lebar masing-masing item dengan ukuran yang sama, kita bisa menggunakan column-width untuk menentukan lebar kolom tetap tanpa harus melibatkan media queries untuk mengurangi jumlah kolom pada saat ukuran layar semakin sempit. column-width akan menciptakan kolom-kolom dengan jumlah yang bisa menyesuaikan diri berdasarkan ruang yang tersisa. Sudah tertulis dengan jelas dalam spesifikasi:

.container {
  column-width:150px;
  column-gap:5px; /* Margin kanan/kiri antarkolom */
}

img {
  display:block;
  width:100%;
  height:auto;
  margin:0 0 5px 0; /* Margin bawah antargambar */
}

Lihat Demo

Item Bukan Gambar

Ada satu hal yang harus diperhatikan jika Anda ingin menciptakan efek/tata letak seperti ini pada elemen yang bukan merupakan gambar, yaitu deklarasi display berupa inline-block. Mendeklarasikan perintah ini akan mencegah perpotongan yang tak terduga pada masing-masing item karena CSS3 Kolom secara normal akan berusaha untuk membuat masing-masing kolom menjadi sama tinggi. Beberapa harus terpaksa dipotong di bagian bawah mengingat properti CSS ini memang sebenarnya berbasis teks:

.container {
  column-width:150px;
  column-gap:5px; /* Margin kanan/kiri antarkolom */
}

.item {
  display:inline-block; /* Mencegah pemotongan item yang tak terduga */
  margin:0 0 5px 0; /* Margin bawah antaritem */
  padding:10px;
  background-color:black;
  color:white;
}

Lihat Demo


Ini yang Saya maksud sebagai perpotongan yang tidak diduga dan tidak dikehendaki:

Item terpotong pada akhir kolom pada tempat yang salah.
Teks terpotong pada bagian bawah untuk memastikan agar masing-masing kolom memiliki tinggi yang sama.

Tidak tahu apa itu Masonry?

Labels: ,

44 Comments:

At Monday, October 7, 2013 at 1:32:00 PM GMT+7, Blogger Gojek Ewako said...

Nice Info Sob... :-bd

 
At Monday, October 7, 2013 at 3:18:00 PM GMT+7, Blogger Admin said...

ternyata dalam pemikiran saya yang dulu itu sama mas, tidak semestinya menggunakan media queries untuk mengurangi jumlah kolom. secara keseluruhan kita bisa andalkan column-width menentukan lebar, pengalaman yang berharga mas \o/

 
At Monday, October 7, 2013 at 4:27:00 PM GMT+7, Blogger BloggerSpice said...

superb...thanks for sharing

 
At Monday, October 7, 2013 at 8:41:00 PM GMT+7, Blogger budkalon said...

Wew, bener juga ya, pake CSS3 kolom :-bd

 
At Monday, October 7, 2013 at 9:35:00 PM GMT+7, Anonymous Anonymous said...

mantap tenannn :-bd

 
At Monday, October 7, 2013 at 9:54:00 PM GMT+7, Blogger Kang Ismet said...

simple ternyata ya.. top markotop \o/

 
At Monday, October 7, 2013 at 9:54:00 PM GMT+7, Blogger no data said...

mantab kang :) salam damai dari blogger sulawesi :D
- damai -

 
At Monday, October 7, 2013 at 10:20:00 PM GMT+7, Blogger Kang Kapuk said...

Yang ane cermati dari materi diatas, justru pada CSS yang ini
column-gap:5px;
Apakah ada perbedaan dengan dengan margin:0 5px;, atau bisa diartikan sama saja

 
At Monday, October 7, 2013 at 10:54:00 PM GMT+7, Anonymous Anonymous said...

Perlu pelan-pelan ini untuk mempelajarinya kodenya juga lumayan banyak :)

 
At Tuesday, October 8, 2013 at 7:36:00 AM GMT+7, Blogger IRIL SAGITA said...

Iya baru tau tentang hal ini akau kak, mohon penjelasannya lebih detil kak taufik ?

 
At Tuesday, October 8, 2013 at 8:06:00 AM GMT+7, Blogger Taufik Nurrohman said...

Kolom Saya gambarkan sebagai *****
Ini adalah hasil tampilan dari deklarasi margin:0 5px yang diterapkan pada tiga buah kolom:

[5px] ***** [5px|5px] ***** [5px|5px] ***** [5px]

Ini adalah hasil tampilan dari deklarasi column-gap:5px menggunakan CSS3 Kolom:

***** [5px] ***** [5px] *****

Hasilnya akan sangat berbeda. Selain itu ada juga istilah margin collapsing, yaitu sebuah keadaan ketika dua buah elemen yang berhadapan, dimana masing-masing sisi yang berhadapan memiliki margin dengan besaran tertentu, maka salah satu margin yang ukurannya lebih kecil akan luluh tergantikan oleh margin yang lebih besar pada sisi yang lainnya. Ini berlaku untuk elemen blok:

<!-- Yang kita harapkan: -->

<div style="margin-bottom:5px;"> ... </div>
[5px]
[20px]
<div style="margin-top:20px;"> ... </div>


<!-- Hasil yang didapatkan: -->

<div style="margin-bottom:5px;"> ... </div>
[20px]
<div style="margin-top:20px;"> ... </div>


Sikap ini akan menghilang jika masing-masing elemen dikenai deklarasi float bernilai left atau right, atau dikenai posisi absolut:

<div style="margin-bottom:5px;float:left;width:100%;"> ... </div>
[5px]
[20px]
<div style="margin-top:20px;float:left;width:100%;"> ... </div>


Kesimpulannya adalah, karena hasilnya yang tidak konsisten dan terkesan rumit, dan biasanya kita juga hanya butuh menerapkan margin pada sela-sela kolom saja, maka lebih baik gunakan column-gap yang lebih konsisten. Secara, kalau kita ingin menambahkan margin kiri dan kanan pada setiap item, lalu yang ingin didorong oleh margin tersebut itu apa? (di sisi kanan maupun kiri sudah tidak ada elemen lagi, masing-masing item berada sendirian di dalam kolom).

 
At Tuesday, October 8, 2013 at 10:24:00 AM GMT+7, Blogger Beben Koben said...

kalau berbicara ttg attr column- jd inget ama attr calc :-bd

 
At Tuesday, October 8, 2013 at 9:54:00 PM GMT+7, Blogger no data said...

simple ternyata ya.. top markotop \o/

 
At Wednesday, October 9, 2013 at 8:17:00 AM GMT+7, Blogger M. Alex Joenaedi said...

Luarbiasa mas, saya hanya bisa kagum, terimaksih banyak ilmunya mas

 
At Wednesday, October 9, 2013 at 10:37:00 AM GMT+7, Blogger Goro said...

mau tanya diluar tema mas...
gimana ya cara pasang generator border radius di blog sperti punya mas....

salam sukses ... \o/

 
At Wednesday, October 9, 2013 at 5:38:00 PM GMT+7, Blogger Damar Zaky said...

pro.

 
At Thursday, October 10, 2013 at 7:21:00 PM GMT+7, Blogger Unknown said...

Artikel yang sangat bermanfaat.
Dengan hanya menggunakan CSS3 efek masonry ternyata dapat dibuat.

tapi bagi seorang web design cara ini masih jarang untuk diterapkan karena pertimbangan browser yang mendukung CSS3 (column-width dan column-gap) umumnya perambaan modern dan diluar sana masih ada orang yang menggunakan komputer dengan IE9 (perambaan lama) kebawah.

 
At Thursday, October 10, 2013 at 9:09:00 PM GMT+7, Anonymous Anonymous said...

sekarang saya baru tau makasih banyak :)

 
At Thursday, October 10, 2013 at 11:49:00 PM GMT+7, Blogger Saeful Rahman said...

css pun jadi. :-d

 
At Saturday, October 12, 2013 at 2:11:00 PM GMT+7, Blogger Unknown said...

butuh konsentrasi buat menerapkannya :-bd :-bd .

 
At Saturday, October 12, 2013 at 5:45:00 PM GMT+7, Blogger Salim said...

Update Galleria, gak perlu lagi pakai masonry... \o/

 
At Sunday, October 13, 2013 at 4:26:00 AM GMT+7, Blogger Ichi Hikaru said...

Baca ginian jam 4 pagi dan blom tidur ... kpala ngebul . Total kang materinya ... :-bd

 
At Sunday, October 13, 2013 at 7:15:00 AM GMT+7, Blogger uki said...

Sip.... :-bd

 
At Tuesday, October 15, 2013 at 6:09:00 AM GMT+7, Blogger Suwardi said...

Saya masih binggung, Niat hati mau nanya juga column-gap yang di permasalahkan yang berhubungan dengan masalah perpotongan kolom-kolom item yang tidak layak sehingga tidak kelihatan indah dan menggangu tapi sudah ada yang menanyakan dan sudah di bahas jadi cuma bisa bilang Terima kasih kang kapuk yang sudah bertanya dan mas taufik yang sudah menjelaskan panjang lebar.

 
At Tuesday, October 15, 2013 at 6:10:00 PM GMT+7, Blogger Sopala Multapa said...

Yang saya tertarik disini adalah efect di " TENTANG " keren mas

 
At Wednesday, October 16, 2013 at 11:42:00 AM GMT+7, Blogger Indra DP said...

nice share :-bd
ditunggu kunjungan baliknya mas bro.

http://indradp-share.blogspot.com/

 
At Wednesday, October 16, 2013 at 2:54:00 PM GMT+7, Blogger Muhamad Ishak Hanapi said...

Mas Ada Template 2 Kolom Gk ? :) Kalo Ada Ane :-bd Likers

 
At Thursday, October 17, 2013 at 4:03:00 PM GMT+7, Blogger MbahDoyok said...

kang nggon tombol close latest comment ketutup tombol maintanceee

 
At Friday, October 18, 2013 at 12:53:00 AM GMT+7, Anonymous Anonymous said...

keren nih DTE, baru lihat lagi.. Wajah baru semangat baru ya :)
ane simpan dan pelajari dulu script CSS nya, siapa tahu nanti dibutuhkan.

 
At Friday, October 18, 2013 at 10:42:00 PM GMT+7, Blogger no data said...

om taufik hebat, DTE:] Full jquery :)
- salam damai -

 
At Saturday, October 19, 2013 at 9:33:00 AM GMT+7, Blogger Kang Ismet said...

nih yang paling rajin blogwalking :-d

 
At Sunday, October 20, 2013 at 7:15:00 AM GMT+7, Anonymous Anonymous said...

bisa dikasih efek transisi ga mas?

 
At Thursday, October 24, 2013 at 3:41:00 PM GMT+7, Blogger Elbuy said...

Aduh. pusing lagi melihat kode-kode pemrograman web pdahal waktu itu rajin belajar kotak-atik kode web. tapi berhenti karena situasi. akhirnya lihat kode di atas bikin pusing,hehe

 
At Friday, October 25, 2013 at 1:30:00 AM GMT+7, Blogger kontol ajing pepek said...

emang lebih oke pakai column-width untuk memecah beberapa konten tapi tetap menyesuaikan diri sama lebar browser. saya juga gak abis pikir si chris pake column-count.
by the way, sistem notifikasi komentarnya kemana nih bro? kemaren² masih kelihatan.

 
At Sunday, October 27, 2013 at 12:14:00 PM GMT+7, Anonymous Anonymous said...

saya coba pelajari dulu mas...!

 
At Tuesday, October 29, 2013 at 5:12:00 PM GMT+7, Blogger kontol ajing pepek said...

iya betul ini, ane masih milih pake margin dibanding column-gap.

 
At Thursday, October 31, 2013 at 6:08:00 PM GMT+7, Anonymous Anonymous said...

Cuma mau ngasih info ni kak, Saya masih menunggu postingan selanjutnya kak ?

 
At Sunday, November 3, 2013 at 11:05:00 AM GMT+7, Blogger Unknown said...

kang ada postingan yang membahas seperti ini : http://tympanus.net/codrops/2012/12/13/sticky-captions-concept/ :D

susah kalo musti di download. juga itu mereka bikin kayaknya di utamakan ke wordpress juga

 
At Sunday, November 3, 2013 at 4:29:00 PM GMT+7, Blogger Taufik Nurrohman said...

Semua file unduhan itu bentuknya HTML statis, tidak mungkin kalau cuma diutamakan ke Wordpress saja.

 
At Monday, November 11, 2013 at 5:35:00 PM GMT+7, Blogger Unknown said...

Mas Kalau Efek Masonry nya di tetapkan ke Postingan (seperti pulsk) bagaimana ya?

 
At Wednesday, December 11, 2013 at 8:15:00 AM GMT+7, Blogger Fahru Rofi said...

udah saya coba di blog saya, dan berhasil seperti matriks dimensi 3, tapi tampilan post urutannya dari yang terbaru itu vertikal (atas ke bawah terus ke kekanan), kalo pake js masonry, urutan post itu horizontal (atas ke kanan terus kebawah), yang saya ingin tahu apakah ada pengaturan khusus agar urutan post css masonry sama seperti js masonry?

js masonry pada browser lama (mozilla 19 -) tidak tampil apapun :'(

 
At Wednesday, December 11, 2013 at 9:00:00 PM GMT+7, Blogger Taufik Nurrohman said...

Itu salah satu kekurangan dari metode ini (soal urutan). Tidak nyangka ada juga yang tanya soal ini.

 
At Thursday, December 12, 2013 at 2:56:00 AM GMT+7, Blogger Fahru Rofi said...

iya tetep saya gunakan karena template awal, postingan kurang rapi sebelum js masonrynya jalan :D
dan saya gunakan juga untuk sidebar footer, hasilnya menurut saya juga pas untuk blog saya. thanks buat jawabannya pak

 
At Thursday, December 12, 2013 at 11:02:00 AM GMT+7, Blogger Dwi said...

ka taufik, ajarin bikin efek loading kayak blog kang ismet dong ;)

 

Post a Comment

<< Home