Berikut adalah teknik untuk menyelaraskan elemen sebaris di dalam induk , secara horizontal dan vertikal pada saat yang bersamaan:
Perataan Vertikal
1) Dalam pendekatan ini, kami membuat elemen inline-block
(pseudo-) sebagai anak pertama (atau terakhir) dari induk , dan menyetel height
propertinya 100%
untuk mengambil semua tinggi induknya .
2) Juga, menambahkan vertical-align: middle
membuat elemen inline (-block) di tengah ruang baris. Jadi, kami menambahkan deklarasi CSS itu ke file pertama dan elemen kami ( gambar ) keduanya.
3) Akhirnya, untuk menghilangkan karakter spasi antara elemen inline (-block) , kita dapat mengatur ukuran font induk menjadi nol font-size: 0;
.
Catatan: Saya menggunakan teknik penggantian gambar Nicolas Gallagher berikut ini.
Apa manfaatnya?
- Wadah ( induk ) dapat memiliki dimensi dinamis.
Tidak perlu menentukan dimensi elemen gambar secara eksplisit.
Kita juga dapat dengan mudah menggunakan pendekatan ini untuk menyelaraskan <div>
elemen secara vertikal ; yang mungkin memiliki konten dinamis (tinggi dan / atau lebar). Tetapi perhatikan bahwa Anda harus mengatur ulang font-size
properti div
untuk menampilkan teks di dalam. Demo Online .
<div class="container">
<div id="element"> ... </div>
</div>
.container {
height: 300px;
text-align: center;
font: 0/0 a;
}
.container:before {
content: ' ';
display: inline-block;
vertical-align: middle;
height: 100%;
}
#element {
display: inline-block;
vertical-align: middle;
font: 16px/1 Arial sans-serif;
}
Hasil
Kontainer Responsif
Bagian ini tidak akan menjawab pertanyaan karena OP sudah mengetahui cara membuat container responsif. Namun, saya akan menjelaskan cara kerjanya.
Untuk membuat tinggi elemen penampung berubah dengan lebarnya (sesuai dengan rasio aspek), kita bisa menggunakan nilai persentase untuk padding
properti atas / bawah .
Nilai persentase pada bantalan atas / bawah atau margin relatif terhadap lebar blok penampung.
Contohnya:
.responsive-container {
width: 60%;
padding-top: 60%;
padding-top: 100%;
padding-top: 45%;
padding-top: 33.75%;
}
Ini Demo Online . Komentari garis dari bawah dan ubah ukuran panel untuk melihat efeknya.
Juga, kita bisa menerapkan padding
properti ke dummy child atau :before
/ :after
pseudo-element untuk mendapatkan hasil yang sama. Tapi catatan bahwa dalam kasus ini, nilai persentase pada padding
relatif terhadap lebar dari .responsive-container
itu sendiri.
<div class="responsive-container">
<div class="dummy"></div>
</div>
.responsive-container { width: 60%; }
.responsive-container .dummy {
padding-top: 100%;
padding-top: 75%;
padding-top: 56.25%;
}
Demo # 1 .
Demo # 2 (Menggunakan :after
pseudo-element)
Menambahkan konten
Menggunakan padding-top
properti menyebabkan ruang yang sangat besar di bagian atas atau bawah konten, di dalam penampung .
Untuk memperbaikinya, kami telah membungkus konten dengan elemen pembungkus, menghapus elemen itu dari aliran normal dokumen dengan menggunakan pemosisian absolut , dan akhirnya memperluas pembungkus (bu menggunakan top
, right
, bottom
dan left
properti) untuk mengisi seluruh ruang dari induknya, itu kontainer .
Kita mulai:
.responsive-container {
width: 60%;
position: relative;
}
.responsive-container .wrapper {
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
}
Ini dia Demo Online .
Kumpul semua
<div class="responsive-container">
<div class="dummy"></div>
<div class="img-container">
<img src="http://placehold.it/150x150" alt="">
</div>
</div>
.img-container {
text-align:center;
font: 0/0 a;
}
.img-container:before {
content: ' ';
display: inline-block;
vertical-align: middle;
height: 100%;
}
.img-container img {
vertical-align: middle;
display: inline-block;
}
Berikut adalah DEMO KERJA .
Jelas, Anda dapat menghindari penggunaan ::before
pseudo-element untuk kompatibilitas browser , dan membuat elemen sebagai anak pertama dari .img-container
:
<div class="img-container">
<div class="centerer"></div>
<img src="http://placehold.it/150x150" alt="">
</div>
.img-container .centerer {
display: inline-block;
vertical-align: middle;
height: 100%;
}
DEMO DIPERBARUI .
Menggunakan max-*
properti
Untuk menjaga gambar di dalam kotak dengan lebar yang lebih rendah, Anda dapat mengatur max-height
dan max-width
properti pada gambar:
.img-container img {
vertical-align: middle;
display: inline-block;
max-height: 100%;
max-width: 100%;
}
Berikut adalah DEMO YANG DIPERBARUI .