Saya memiliki div
set ke display:block
( 90px
height
dan width
), dan saya memiliki beberapa teks di dalamnya.
Saya perlu teks untuk disejajarkan di tengah baik secara vertikal dan horizontal.
Saya sudah mencoba text-align:center
, tetapi itu tidak melakukan bagian horizontal, jadi saya mencoba vertical-align:middle
, tetapi tidak berhasil.
Ada ide?
text-align:center
tidak melakukan "bagian vertikal"?Jawaban:
Jika itu adalah satu baris teks dan / atau gambar, maka itu mudah dilakukan. Cukup gunakan:
Itu dia. Jika bisa beberapa baris, maka itu agak lebih rumit. Tetapi ada solusi di http://pmob.co.uk/ . Cari "perataan vertikal".
Karena mereka cenderung menjadi peretasan atau menambahkan div yang rumit ... Saya biasanya menggunakan tabel dengan sel tunggal untuk melakukannya ... untuk membuatnya sesederhana mungkin.
Pembaruan untuk 2020:
Kecuali Anda perlu membuatnya bekerja di browser sebelumnya seperti Internet Explorer 10, Anda dapat menggunakan flexbox. Ini didukung secara luas oleh semua browser utama saat ini . Pada dasarnya, wadah perlu ditentukan sebagai wadah fleksibel, bersama dengan pemusatan sepanjang sumbu utama dan silangnya:
Untuk menentukan lebar tetap untuk anak, yang disebut "item fleksibel":
Contoh: http://jsfiddle.net/2woqsef1/1/
Untuk menyusutkan konten, itu bahkan lebih sederhana: hapus saja
flex: ...
baris dari item fleksibel, dan itu secara otomatis menyusut.Contoh: http://jsfiddle.net/2woqsef1/2/
Contoh di atas telah diuji pada peramban utama termasuk MS Edge dan Internet Explorer 11.
Satu catatan teknis jika Anda perlu menyesuaikannya: di dalam item fleksibel, karena item fleksibel ini bukan wadah fleksibel itu sendiri, cara lama CSS non-flexbox berfungsi seperti yang diharapkan. Namun, jika Anda menambahkan item flex tambahan ke wadah flex saat ini, kedua item flex tersebut akan ditempatkan secara horizontal. Untuk membuatnya ditempatkan secara vertikal, tambahkan
flex-direction: column;
wadah fleksibel. Ini adalah cara kerjanya antara wadah fleksibel dan wadahnya elemen anak langsungnya .Ada metode alternatif untuk melakukan pemusatan: dengan tidak menentukan
center
distribusi pada sumbu utama dan silang untuk wadah fleksibel, tetapi sebaliknya menentukanmargin: auto
item fleksibel untuk mengambil semua ruang ekstra di keempat arah, dan margin yang didistribusikan secara merata akan membuat item fleksibel terpusat ke segala arah. Ini berfungsi kecuali jika ada beberapa item fleksibel. Juga, teknik ini berfungsi pada MS Edge tetapi tidak pada Internet Explorer 11.Pembaruan untuk 2016/2017:
Ini dapat dilakukan dengan lebih umum
transform
, dan bekerja dengan baik bahkan di browser lama seperti Internet Explorer 10 dan Internet Explorer 11. Ini dapat mendukung banyak baris teks:Contoh: https://jsfiddle.net/wb8u02kL/1/
Untuk mengecilkan lebar:
Solusi di atas menggunakan lebar tetap untuk area konten. Untuk menggunakan lebar yang dibungkus menyusut, gunakan
Contoh: https://jsfiddle.net/wb8u02kL/2/
Jika dukungan untuk Internet Explorer 10 diperlukan, maka flexbox tidak akan berfungsi dan metode di atas dan
line-height
metode itu akan berfungsi. Kalau tidak, flexbox akan melakukan pekerjaan itu.sumber
display: table-cell
properti untuk itu, FYI. Menggunakannya membuat elemen berperilaku seperti sel tabel dan memungkinkanvertical-align: middle;
font:
ini, pastikan Anda meletakkannya di atasline-
ketinggian`.Teknik umum pada 2014:
Pendekatan 1 -
transform
translateX
/translateY
:Contoh Di Sini / Contoh Layar Penuh
Di browser yang didukung (sebagian besar dari mereka), Anda dapat menggunakan
top: 50%
/left: 50%
dalam kombinasi dengantranslateX(-50%) translateY(-50%)
untuk memusatkan elemen secara vertikal / horizontal secara dinamis.Pendekatan 2 - Metode Flexbox:
Contoh Di Sini / Contoh Layar Penuh
Di browser yang didukung , setel
display
elemen yang ditargetkan keflex
dan gunakanalign-items: center
untuk pemusatan vertikal danjustify-content: center
untuk pemusatan horizontal. Hanya saja, jangan lupa menambahkan awalan vendor untuk dukungan browser tambahan ( lihat contoh ).Pendekatan 3 -
table-cell
/vertical-align: middle
:Contoh Di Sini / Contoh Layar Penuh
Dalam beberapa kasus, Anda perlu memastikan bahwa ketinggian
html
/body
elemen diatur ke100%
.Untuk penyelarasan vertikal, mengatur orangtua elemen
width
/height
untuk100%
dan menambahkandisplay: table
. Kemudian untuk elemen anak, ubahdisplay
totable-cell
dan addvertical-align: middle
.Untuk pemusatan horizontal, Anda bisa menambahkan
text-align: center
ke tengah teks daninline
elemen anak - anak lainnya . Atau, Anda bisa menggunakanmargin: 0 auto
asumsi elemenblock
level.Pendekatan 4 - Diposisikan sepenuhnya
50%
dari atas dengan perpindahan:Contoh Di Sini / Contoh Layar Penuh
Pendekatan ini mengasumsikan bahwa teks memiliki ketinggian yang diketahui - dalam contoh ini
18px
,. Posisikan saja elemen50%
dari atas, relatif terhadap elemen induk. Gunakanmargin-top
nilai negatif yang setengah dari tinggi elemen yang diketahui, dalam hal ini --9px
.Pendekatan 5 -
line-height
Metode (Paling tidak fleksibel - tidak disarankan):Contoh Di Sini
Dalam beberapa kasus, elemen induk akan memiliki ketinggian tetap. Untuk pemusatan vertikal, yang harus Anda lakukan adalah mengatur a
line-height
nilai pada elemen anak sama dengan tinggi tetap dari elemen induk.Meskipun solusi ini akan berfungsi dalam beberapa kasus, perlu dicatat bahwa itu tidak akan berfungsi ketika ada beberapa baris teks - seperti ini .
Metode 4 dan 5 bukan yang paling dapat diandalkan. Pergilah dengan salah satu dari 3 yang pertama.
sumber
table-cell
sebanyak mungkin.Menggunakan flexbox / CSS:
CSS:
Diambil dari Tip Cepat: Cara Paling Sederhana Untuk Memusatkan Elemen Secara Vertikal Dan Horisontal
sumber
display: -ms-flexbox; -ms-flex-align: center; -ms-flex-pack: center
.text-align:center
untukinline-
elemen .. seperti teks.Tambahkan baris
display: table-cell;
ke konten CSS Anda untuk div itu.Hanya sel tabel yang mendukung
vertical-align: middle;
, tetapi Anda dapat memberikan definisi [table-cell] ke div ...Contoh langsung ada di sini: http://jsfiddle.net/tH2cc/
sumber
position
mutlak atau diperbaiki. Lihat: jsfiddle.net/tH2cc/1636Saya selalu menggunakan CSS berikut untuk sebuah wadah, untuk memusatkan isinya secara horizontal dan vertikal.
Lihat beraksi di sini: https://jsfiddle.net/yp1gusn7/
sumber
Anda dapat mencoba kode yang sangat mudah untuk ini:
Tautan kode: http://codepen.io/santoshkhalse/pen/xRmZwr
sumber
Berikan kelas CSS ini kepada <div> yang ditargetkan:
sumber
Anda dapat menggunakan
flex
properti di orang tuadiv
dan menambahkanmargin:auto
properti ke item anak-anak:Anda dapat melihat lebih banyak opsi di
flex
sini: https://css-tricks.com/snippets/css/a-guide-to-flexbox/sumber
Pendekatan 1
Pendekatan 2
Pendekatan 3
sumber
sumber
sumber
sumber
sumber
Ini berfungsi untuk saya (diuji OK!):
HTML:
CSS:
Anda dapat memilih nilai lain dari 50%. Misalnya, 25% ke pusat di 25% dari orang tua.
sumber
sumber
Anda dapat mencoba metode berikut:
Jika Anda memiliki satu kata atau satu kalimat kalimat, maka kode berikut dapat melakukan triknya.
Memiliki teks di dalam tag div dan berikan id. Tetapkan properti berikut untuk id itu.
Catatan: Pastikan properti tinggi garis sama dengan tinggi divisi.
Gambar
Tetapi, jika konten lebih dari satu kata atau satu baris maka ini tidak berfungsi. Juga, akan ada saat-saat ketika Anda tidak dapat menentukan ukuran divisi dalam px atau% (ketika divisi sangat kecil dan Anda ingin konten berada tepat di tengah).
Untuk mengatasi masalah ini, kita dapat mencoba kombinasi properti berikut.
Gambar
3 baris kode ini mengatur konten persis di tengah divisi (terlepas dari ukuran layar). The "menyelaraskan-item: center" membantu dalam centering vertikal sementara "membenarkan-konten: center" akan membuatnya horizontal terpusat.
Catatan: Flex tidak berfungsi di semua browser. Pastikan Anda menambahkan awalan vendor yang sesuai untuk dukungan browser tambahan.
sumber
KISI
Tampilkan cuplikan kode
sumber
Menyesuaikan ketinggian garis untuk mendapatkan perataan vertikal.
sumber
Ini harus menjadi jawaban yang tepat. Terbersih dan paling sederhana:
sumber
Terapkan gaya:
Teks Anda akan terpusat terlepas dari panjangnya.
sumber
Ini bekerja untuk saya:
sumber
Bagi saya ini adalah solusi terbaik:
HTML:
CSS:
sumber
sumber
Kode sederhana yang bekerja untuk saya! Hanya satu baris dan teks Anda akan dipusatkan secara horizontal.
Outputnya terlihat seperti ini:
Silakan pilih jawaban ini jika itu berfungsi hanya untuk meluangkan waktu devs mencari solusi mudah. Terima kasih! :)
sumber
Coba contoh berikut ini. Saya telah menambahkan contoh untuk setiap kategori: horisontal dan vertikal
sumber