Bu sorunun eski olduğunu biliyorum ama benim için mükemmel bir çözüm buldum.
Bu css'yi ortalamak istediğim div'e ekliyorum:
div:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
Bu her seferinde işe yarar ve temizdir.
Düzenleme: Sadece tamamlama aşkına, scss kullanıyorum ve dikey olarak ortalamak istediğim, doğrudan çocuk sahibi olan her ebeveyne dahil ettiğim kullanışlı bir karışımım var:
@mixin vertical-align($align: middle) {
&:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: $align;
font-size: 0;
}
& > * {
vertical-align: $align;
font-size: 14px;
}
}
Tam açıklama:
div:beforediv'in içine, ancak alt öğelerinin herhangi birinin önüne bir öğe ekler. Kullanırken :beforeveya :afterbir content:beyan kullanmalıyız, aksi takdirde hiçbir şey olmaz, ancak amacımız için içerik boş olabilir. Daha sonra, ebeveyninin yüksekliği tanımlandığı ve bu eleman en azından inline-blok olduğu sürece, elemana, ebeveyninin boyu kadar uzun olmasını söyleriz. farklı şekilde işlediğinin vertical-alignaksine, ebeveynle ilgili kendinin dikey konumunu tanımlar text-align.
@mixinDeklarasyon küstahlık kullanıcıları içindir ve bu gibi kullanılabilir olacaktır:
div {
@include vertical-align(middle)
}