Membuat Agar Tinggi Kontainer Mengikuti Tinggi Latar Gambarnya yang Responsif/Adaptif
Saya agak kesulitan untuk menemukan istilah yang tepat untuk menyatakan “latar gambar yang ukurannya bisa menyesuaikan diri dengan kontainer setiap kali ukuran kontainer berubah”, jadi Saya sebut saja sebagai ‘responsif’ atau ‘adaptif’, meskipun istilah tersebut sebenarnya kurang tepat. Istilah fluid lebih tepat.
Ketika kita ingin membuat sebuah gambar menjadi fluid, kita bisa mengeset lebar gambar tersebut ke dalam satuan persen dan tinggi gambar sebagai auto
untuk menjaga agar ukuran tingginya tetap proporsional:
img {
width:100%;
height:auto;
}
Bagaimana dengan latar gambar? Kita bisa menggunakan properti background-size
dengan nilai cover
atau 100% auto
. Hanya saja, di sini masalahnya adalah kita tidak bisa membuat tinggi kontainer mengikuti tinggi latar gambar setiap kali lebar kontainer berubah:
div {
background:transparent url('path/to/image.jpg') no-repeat 50% 0;
background-size:100% auto;
height:615px;
}
Rasio Ukuran Tinggi Proporsional
Ada sebuah metode yang bisa digunakan untuk membuat tinggi kontainer gambar bisa mengikuti tinggi latar gambar yang ada di dalamnya (di belakangnya), yaitu dengan cara mengeset ukuran tinggi kontainer menjadi 0
dan menentukan nilai sebuah sisi padding
vertikal dalam satuan persen untuk menciptakan ukuran tinggi kontainer palsu. Nilainya berupa hasil perbandingan antara tinggi gambar dengan lebar gambar dalam bentuk persen. Perhitungannya seperti ini:
Atau jika diterjemahkan ke dalam bahasa yang sederhana adalah: “Tinggi proporsional X adalah sama dengan sekian persen dari lebarnya.”
Saya menggunakan gambar dengan ukuran lebar 800 piksel dan tinggi 615 piksel pada halaman demo, jadi:
Rasio Tinggi = 76.875%;
div {
background:transparent url('path/to/image.jpg') no-repeat 50% 0;
background-size:100% auto;
height:0; /* Set tinggi kontainer menjadi `0` */
padding-bottom:76.875%; /* Gunakan `padding` untuk menciptakan dimensi tinggi */
}
Catatan: Jika Anda telah menerapkan CSS Universal Box-Sizing, Saya sarankan Anda untuk menambahkan properti box-sizing
dengan nilai content-box
pada kontainer untuk mengembalikan logika box-model ke keadaan semula. Meskipun ketika Saya coba tanpa menambahkan properti itu sebenarnya tidak ada masalah. Ini cuma untuk memantapkan saja:
div {
background:transparent url('path/to/image.jpg') no-repeat 50% 0;
background-size:100% auto;
height:0;
padding-bottom:76.875%;
box-sizing:content-box;
}
Menambahkan Konten ke dalam Kontainer
Anda memerlukan sebuah elemen tambahan untuk diposisikan sebagai elemen absolute
karena kontainer yang sekarang sudah tidak memiliki ruang lagi (tinggi kontainer sekarang adalah 0 piksel):
HTML
<div class="container">
<div class="container-content">Konten di sini…</div>
</div>
CSS
.container {
background:transparent url('path/to/image.jpg') no-repeat 50% 0;
background-size:100% auto;
height:0;
padding-bottom:76.875%;
box-sizing:content-box;
position:relative;
}
.container-content {
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
overflow:auto;
}
15 Comments:
berarti bisa dong di terapkan pada bagian komentar, oke dah terima kasih mas..... mo di praktek in...
By Taufik, at Wednesday, September 3, 2014 at 1:16:00 PM GMT+7
ok mas, terima kasih tutorialnya ...
By Rdk, at Friday, September 5, 2014 at 8:50:00 AM GMT+7
Ini juga bisa diterapkan buat img didalam posting blog kan mas. Saya terapkan dan berhasil.
By you, at Monday, September 8, 2014 at 10:58:00 PM GMT+7
kalau saya biasa pakai ini
#sample img {background-size:cover;background-position:center center;background-attachment:fixed;}
By Arlina, at Wednesday, September 10, 2014 at 8:23:00 PM GMT+7
Menurut saya yang responsiv adaptiv itu ga boleh content-box musti tetap border-box; Bagaimana jika element itu diset padding 9999px. Mungkin bakal horizontal scroll, kan udah nge-lawan judulnya yang bilang responsif adaptif
By David, at Sunday, September 21, 2014 at 7:03:00 PM GMT+7
Satuan piksel tidak memakai rasio, satuan piksel tidak adaptif, satuan piksel tidak fluid. Mungkin yang kamu maksud itu ada di kasus yang lain seperti: kolom responsif sama tinggi.
By Taufik Nurrohman, at Monday, September 22, 2014 at 4:13:00 PM GMT+7
ulasan yang bagus bang, saya suka ketmu masalah begini btw klau misalnya lebarnya bukan 800 dan tingginya bukn 615 apa harus diganti lagi paddingnya? maksudnya apa harus dibuat media handle nya?
By Mr.Randy, at Monday, October 27, 2014 at 8:56:00 PM GMT+7
pusing bang lihat kodenya...
maklum lagi belajar....
By binkbenk, at Saturday, November 1, 2014 at 3:23:00 PM GMT+7
ini solusi untuk image lightbox yang saya gunakan, makasih sudah berbagi
By Arlina, at Friday, November 7, 2014 at 6:29:00 AM GMT+7
wah ternyata begitu toh caranya, makasih Mas Taufik tutorialnya, sangat membantu \o/
By Anonymous, at Monday, November 10, 2014 at 2:13:00 PM GMT+7
wah, kayaknya bagus juga untuk diterapkan.
terimakasih mas udah mau ngeshare tutor bermanfaat seperti ini.
salam kenal juga ya mas!! :D
By Unknown, at Tuesday, November 25, 2014 at 6:33:00 PM GMT+7
thanks buat tuts2nya :p
By obatherbalalami, at Thursday, December 18, 2014 at 9:39:00 PM GMT+7
MenarikMas Tutorialnya sangat bermanfaat
By Unknown, at Sunday, December 21, 2014 at 6:25:00 PM GMT+7
makasih buat artikelnya sungguh bermanfaat saya masih belajarr
By Unknown, at Wednesday, January 13, 2016 at 8:42:00 AM GMT+7
makaih mas, izin belajar di blog ini. :)
By Unknown, at Wednesday, September 7, 2016 at 11:02:00 PM GMT+7
Post a Comment
<< Home