Saya mencoba untuk mendapatkan wadah biru di tengah-tengah yang merah muda, namun tampaknya vertical-align: middle;
tidak berhasil dalam kasus itu.
<div style="display: block; position: absolute; left: 50px; top: 50px;">
<div style="text-align: left; position: absolute;height: 56px;vertical-align: middle;background-color: pink;">
<div style="background-color: lightblue;">test</div>
</div>
</div>
Hasil:
Harapan:
Tolong sarankan bagaimana saya bisa mencapai itu.
html
css
vertical-alignment
absolute
Vladimirs
sumber
sumber
position: absolute
mana - mana?vertical-align: middle;
bekerja dengandisplay: inline-block
atau tata letak mejamargin-top: calc((56px - 16px) / 2)
, di mana56px - parent height
,16px - element height/font-size
- JSFiddleJawaban:
Pertama-tama catatan yang
vertical-align
hanya berlaku untuk sel tabel dan elemen tingkat inline.Ada beberapa cara untuk mencapai keberpihakan vertikal yang mungkin memenuhi atau tidak memenuhi kebutuhan Anda. Namun saya akan menunjukkan kepada Anda dua metode dari favorit saya:
1. Menggunakan
transform
dantop
Poin kuncinya adalah bahwa nilai persentase pada
top
relatif terhadapheight
blok yang berisi; Sedangkan nilai persentase padatransform
s relatif terhadap ukuran kotak itu sendiri (kotak pembatas).Jika Anda mengalami masalah rendering font (font buram), perbaikannya adalah menambahkan
perspective(1px)
ketransform
deklarasi sehingga menjadi:Perlu dicatat bahwa CSS
transform
didukung di IE9 + .2. Menggunakan
inline-block
elemen (pseudo-)Dalam metode ini, kami memiliki dua
inline-block
elemen saudara yang disejajarkan secara vertikal di tengah olehvertical-align: middle
deklarasi.Salah satu dari mereka memiliki salah
height
satu100%
dari induknya dan yang lainnya adalah elemen yang kami inginkan yang ingin kami selaraskan di tengah.Akhirnya, kita harus menggunakan salah satu metode yang tersedia untuk menghilangkan celah antara elemen-elemen inline-level .
sumber
valign
elemen metode pertama harusdisplay: block
transform: translateY(-50%);
Belum pernah melihat ini sebelumnya, tetapi bekerja dengan sempurna. Penghemat kehidupan nyata.Gunakan ini :
lihat tautan ini: https://www.smashingmagazine.com/2013/08/absolute-horizontal-vertical-centering-css/
sumber
height
properti harus didefinisikan (dalam px, em, dll.) Agar ini berfungsi.Gunakan flex blox di div Anda yang diposisikan tidak tepat untuk memusatkan kontennya.
Lihat contoh https://plnkr.co/edit/wJIX2NpbNhO34X68ZyoY?p=preview
sumber
Pusatkan secara vertikal dan horizontal:
sumber
Anda dapat menggunakan
display:table
/table-cell;
sumber
.b
hilangposition: absolute;
yang penting untuk mendapatkan properti hal-hal lain yang ditampilkan yang saya tidak termasuk untuk menjaga kode lebih jelas. Saya tahu itu tidak masuk akal memiliki sel tabel benar-benar diposisikan tetapi mungkin ada pendekatan lain yang akan memungkinkan untuk mempertahankanposition: absolute;
keduanya.a
dan.b
kelas?Ini cara sederhana menggunakan objek Top.
misalnya: Jika ukuran elemen absolut adalah 60px.
sumber
calc
sangat membantu, meskipun ini seharusnyatop: calc(50% - 30px)
benar-benar terpusat.Solusi sederhana tambahan
HTML:
CSS:
sumber
Silakan periksa jawaban ini untuk masalah serupa.
Sejauh ini cara termudah yang saya temukan.
https://stackoverflow.com/a/26079837/4593442
CATATAN. Saya menggunakan tampilan: -webkit-flex; bukannya tampilan: flex; untuk pengujian di dalam safari.
FOOTNOTE. Saya seorang pemula saja, berbagi bantuan dari seseorang yang jelas berpengalaman.
sumber
Anda dapat melakukannya dengan menggunakan
display:table;
di div orangtua dandisplay: table-cell; vertical-align: middle;
di div anaksumber