Bir metin ve / veya resim satırı ise, yapılması kolaydır. Sadece kullan:
text-align: center;
vertical-align: middle;
line-height: 90px; /* The same as your div height */
Bu kadar. Birden fazla satır olabilirse, o zaman biraz daha karmaşıktır. Ancak http://pmob.co.uk/ adresinde çözümler var . "Dikey hizalama" yı arayın.
Kesmek veya karmaşık div'ler eklemek eğiliminde oldukları için ... Bunu yapmak için genellikle tek hücreli bir tablo kullanıyorum ... mümkün olduğunca basit hale getirmek için.
2020 için güncelleme:
Internet Explorer 10 gibi daha önceki tarayıcılarda çalışmasını gerektirmedikçe, flexbox'ı kullanabilirsiniz. O olduğu yaygın tüm güncel büyük tarayıcılar tarafından desteklenen . Temel olarak, kabın ana ve çapraz ekseni boyunca merkezleme ile birlikte esnek bir konteyner olarak belirtilmesi gerekir:
#container {
display: flex;
justify-content: center;
align-items: center;
}
Çocuk için "esnek öğe" olarak adlandırılan sabit bir genişlik belirtmek için:
#content {
flex: 0 0 120px;
}
Örnek: http://jsfiddle.net/2woqsef1/1/
İçeriği daraltmak için, daha da basittir: flex: ...
satırı esnek öğeden çıkarın ve otomatik olarak daraltılır.
Örnek: http://jsfiddle.net/2woqsef1/2/
Yukarıdaki örnekler, MS Edge ve Internet Explorer 11 dahil olmak üzere büyük tarayıcılarda test edilmiştir.
Özelleştirmeniz gereken bir teknik not: esnek öğenin içinde, bu esnek öğe esnek bir kap olmadığından, CSS'nin eski esnek olmayan kutusu beklendiği gibi çalışır. Ancak, mevcut esnek kaba ek bir esnek öğe eklerseniz, iki esnek öğe yatay olarak yerleştirilir. Dikey olarak yerleştirmek flex-direction: column;
için esnek konteynere ekleyin . Esnek bir kap ve onun yakın alt öğeleri arasında böyle çalışır .
Merkezlemeyi yapmanın alternatif bir yöntemi vardır: center
esnek kabın ana ve çapraz eksenindeki dağılımı belirtmek yerine, bunun yerine margin: auto
dört yöndeki tüm fazladan yer kaplaması için esnek öğeyi ve eşit dağıtılmış kenar boşluklarını belirtmek esnek öğeyi her yöne ortalayacak. Bu, birden fazla esnek öğenin olması dışında çalışır. Ayrıca, bu teknik MS Edge üzerinde çalışır, ancak Internet Explorer 11 üzerinde çalışmaz.
2016/2017 Güncellemesi:
Daha yaygın olarak yapılabilir transform
ve Internet Explorer 10 ve Internet Explorer 11 gibi eski tarayıcılarda bile iyi çalışır.
position: relative;
top: 50%;
transform: translateY(-50%);
Örnek: https://jsfiddle.net/wb8u02kL/1/
Genişliği küçültmek için:
Yukarıdaki çözüm, içerik alanı için sabit bir genişlik kullanmıştır. Büzülme ile sarılmış bir genişlik kullanmak için
position: relative;
float: left;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
Örnek: https://jsfiddle.net/wb8u02kL/2/
Internet Explorer 10 desteği gerekiyorsa, flexbox çalışmaz ve yukarıdaki yöntem ve line-height
yöntem çalışır. Aksi takdirde, flexbox işi yapar.
text-align:center
"dikey kısmı" yapmıyor musunuz?