Saya mencoba memusatkan span
atau div
elemen secara vertikal di dalam div
elemen lain . Namun ketika saya katakan vertical-align: middle
, tidak ada yang terjadi. Saya sudah mencoba mengubah display
properti dari kedua elemen, dan sepertinya tidak ada yang berhasil.
Inilah yang sedang saya lakukan di halaman web saya:
.main {
height: 72px;
vertical-align: middle;
border: 1px solid black;
padding: 2px;
}
.inner {
vertical-align: middle;
border: 1px solid red;
}
.second {
border: 1px solid blue;
}
<div class="main">
<div class="inner">
This box should be centered in the larger box
<div class="second">Another box in here</div>
</div>
</div>
Berikut ini adalah jsfiddle dari implementasi yang menunjukkan bahwa itu tidak berfungsi: http://jsfiddle.net/gZXWC/
Menggunakan CSS3:
Css:
Catatan: Ini mungkin tidak berfungsi di IE lama
sumber
inline-flex
untuk memiliki beberapa elemen dalam satu baris di dalam elemen dalam..inner { width: 100%; }
. Dengan cara ini, sepertinya berfungsi seperti.outer { display: table; } .inner { display: table-cell; vertical-align: middle; }
tetapi tanpa memaksa lebar minimum.justify-content: center;
menyelaraskan secara horizontal mana yang sangat bagusCoba ini, bekerja untuk saya dengan sangat baik:
sumber
#element span {height:100%;display:-webkit-box;-webkit-box-pack:center;-webkit-box-align:center;}
- perhatikan ketinggiannya penting untuk memastikan bentang mewarisi tinggi penuh wadahnya (mungkin div) jika tidak Anda masih tidak akan mendapatkan pemusatan vertikal!box
didisplay
Mengatur ketinggian garis ke ketinggian yang sama dengan yang mengandung div juga akan berfungsi
DEMO http://jsfiddle.net/kevinPHPkevin/gZXWC/7/
sumber
line-height
juga akan mengubah ketinggian elemen dalam. b) Elemen dalam masih belum terpusat secara vertikal secara akurat. c) Ini tidak berfungsi pada elemen yang tidak mengandung teks, misalnya:,<img>
atau elemen dengan ketinggian tetap.Dalam kasus Anda tidak dapat mengandalkan flexbox ... Tempat
.child
ke.parent
pusat 's. Bekerja ketika ukuran piksel tidak diketahui (dengan kata lain, selalu) dan tidak ada masalah dengan IE9 + juga.sumber
Anda harus memakai
vertical-align: middle
elemen dalam, bukan elemen luar. Aturline-height
properti pada elemen luar agar sesuai denganheight
elemen luar. Kemudian aturdisplay: inline-block
danline-height: normal
pada elemen dalam. Dengan melakukan ini, teks pada elemen bagian dalam akan dibungkus dengan ketinggian garis normal. Bekerja di Chrome, Firefox, Safari, dan IE 8+Biola
sumber
line-height: normal;
dandisplay:inline;
bekerja juga. Bonus dari metode ini adalah tidak mengganggutext-align:center;
, yang menggunakandisplay: table-cell;
dapat menimbulkan masalah. Cukup sering kita ingin menyelaraskan secara horizontal maupun vertikal. Lihat biola yang diedit ini: jsfiddle.net/br090prs/36line-height: normal
dandisplay: inline-block
agar teks dalam akan terbungkus dengan benar. Jika Anda yakin teks di div bagian dalam tidak akan pernah terbungkus maka properti ini tidak akan diperlukan.Saya menggunakan ini untuk menyelaraskan segala sesuatu di tengah div pembungkus kalau-kalau itu membantu siapa pun - saya merasa paling sederhana:
sumber
Di sini Anda memiliki contoh dua cara melakukan pelurusan vertikal. Saya menggunakannya dan mereka bekerja dengan cukup baik. Satu menggunakan penentuan posisi absolut dan lainnya menggunakan flexbox .
Contoh Align Vertikal
Menggunakan flexbox, Anda dapat menyelaraskan sebuah elemen dengan sendirinya di dalam elemen lain dengan
display: flex;
menggunakanalign-self
. Jika Anda perlu menyelaraskannya juga secara horizontal, Anda dapat menggunakanalign-items
danjustify-content
di dalam wadah.Jika Anda tidak ingin menggunakan flexbox, Anda bisa menggunakan properti posisi. Jika Anda menjadikan wadah relatif dan konten absolut, konten akan dapat bergerak bebas di dalam wadah. Jadi, jika Anda menggunakan
top: 0;
danleft: 0;
dalam konten, itu akan diposisikan di sudut kiri atas wadah.Kemudian, untuk menyelaraskannya, Anda hanya perlu mengubah referensi atas dan kiri menjadi 50%. Ini akan memposisikan konten di pusat wadah dari sudut kiri atas konten.
Jadi, Anda perlu memperbaiki ini menerjemahkan konten setengah ukurannya ke kiri dan atas.
sumber
di sini adalah artikel bagus tentang cara menyelaraskan vetical .. Saya suka cara mengapung.
http://www.vanseodesign.com/css/vertical-centering/
HTML:
Dan gaya yang sesuai:
sumber
HTML
CSS
Kami mengatur div induk untuk ditampilkan sebagai tabel dan div anak untuk ditampilkan sebagai sel tabel. Kita kemudian dapat menggunakan penyelarasan vertikal pada div anak dan mengatur nilainya ke tengah. Apa pun di dalam div anak ini akan dipusatkan secara vertikal.
sumber
Itu mudah. Cukup tambahkan
display:table-cell
di kelas utama Anda.Lihatlah jsfiddle ini !
sumber
Ini adalah solusi termudah terbaru - tidak perlu mengubah apa pun, cukup tambahkan tiga baris aturan CSS ke wadah div Anda di mana Anda ingin memusatkan. Saya suka
Flex Box
#LoveFlexBoxBonus
yang
justify-content
nilai dapat diatur untuk beberapa pilihan berikut:flex-start
, yang akan menyelaraskan div anak ke tempat aliran fleksibel dimulai dalam wadah induknya. Dalam hal ini, ia akan tetap di atas.center
, yang akan menyelaraskan div anak ke tengah wadah induknya. Ini benar-benar rapi, karena Anda tidak perlu menambahkan div tambahan untuk membungkus semua anak untuk meletakkan bungkusnya dalam wadah induk untuk memusatkan anak-anak. Karena itu, ini adalah pusat vertikal yang sebenarnya (dalam bahasa Indonesiacolumn
flex-direction
. Demikian pula, jika Anda mengubahflow-direction
kerow
, itu akan menjadi pusat secara horizontal.flex-end
, yang akan menyelaraskan div anak ke tempat aliran fleksibel berakhir di wadah induknya. Dalam hal ini, itu akan pindah ke bawah.space-between
, yang akan menyebarkan semua anak dari awal aliran ke akhir aliran. Jika demo, saya menambahkan div anak lain, untuk menunjukkan mereka tersebar.space-around
, mirip denganspace-between
, tetapi dengan setengah ruang di awal dan akhir aliran.sumber
Karena
vertical-align
berfungsi seperti yang diharapkan padatd
, Anda dapat menempatkan sel tunggaltable
didiv
untuk menyelaraskan kontennya.Kikuk, tetapi bekerja sejauh yang saya tahu. Mungkin tidak memiliki kelemahan dari solusi lainnya.
sumber
Cukup masukkan konten di dalam tabel dengan tinggi 100%, dan atur tinggi untuk div utama
sumber
Untuk memusatkan elemen span atau div secara vertikal di dalam div lain, tambahkan posisi relatif ke div induk dan posisi absolut ke div anak. Sekarang div anak dapat diposisikan di mana saja di dalam div. Contoh di bawah ini memusatkan secara horizontal dan vertikal.
css:
sumber
Ini adalah pendekatan modern dan memanfaatkan fungsi CSS Flexbox. Anda sekarang dapat menyelaraskan konten secara vertikal dalam wadah induk Anda dengan hanya menambahkan gaya ini ke
.main
wadahDan kamu baik untuk pergi!
sumber