Saya tahu pertanyaan ini sudah lama, tetapi saya menemukan solusi yang sempurna bagi saya.
Saya menambahkan css ini ke div yang ingin saya pusatkan:
div:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
Ini bekerja setiap saat dan bersih.
Sunting: Hanya demi penyelesaian, saya menggunakan scss dan saya memiliki mixin praktis yang saya sertakan pada setiap orang tua yang mengarahkan anak-anak yang ingin saya buat secara vertikal di tengah:
@mixin vertical-align($align: middle) {
&:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: $align;
font-size: 0;
}
& > * {
vertical-align: $align;
font-size: 14px;
}
}
Penjelasan lengkap:
div:beforeakan menambahkan elemen di dalam div, tetapi sebelum salah satu anaknya. Saat menggunakan :beforeatau :afterkita harus menggunakan content:deklarasi jika tidak, tidak akan terjadi apa-apa, tetapi untuk tujuan kita, konten bisa kosong. Kemudian kita memberi tahu elemen setinggi induknya, selama tinggi induknya ditentukan dan elemen ini setidaknya sebaris-blok. vertical-alignmendefinisikan posisi vertikal terkait diri dengan orang tua, berlawanan dengan text-alignyang bekerja secara berbeda.
The @mixindeklarasi untuk pengguna merendahkannya dan itu akan digunakan seperti ini:
div {
@include vertical-align(middle)
}