Penjajaran vertikal CSS elemen-elemen sebaris / sebaris


142

Saya mencoba untuk mendapatkan beberapa komponen inlinedan inline-blockdisejajarkan secara vertikal dalam a div. Bagaimana bisa spandalam contoh ini bersikeras ditekan? Saya sudah mencoba keduanya vertical-align:middle;danvertical-align:top; , tetapi tidak ada perubahan.

HTML:

<div>
  <a></a><a></a>
  <span>Some text</span>
</div>

CSS:

a {
    background-color:#FFF;
    width:20px;
    height:20px;
    display:inline-block;
    border:solid black 1px;
}

div {
    background:yellow;
    vertical-align:middle;
}
span {
    background:red;
}

HASIL:
masukkan deskripsi gambar di sini

BIOLA


perhatikan bahwa ini tidak akan terjadi jika <a>elemen mengandung beberapa teks di dalamnya melihat tautan ini
S.Serpooshan

Jawaban:


270

vertical-alignberlaku untuk elemen yang diluruskan, bukan elemen induknya. Untuk menyelaraskan secara vertikal anak-anak div, lakukan ini sebagai gantinya:

div > * {
    vertical-align:middle;  // Align children to middle of line
}

Lihat: http://jsfiddle.net/dfmx123/TFPx8/1186/

CATATAN : vertical-alignrelatif terhadap baris teks saat ini, bukan ketinggian penuh dari induk div. Jika Anda ingin orang tua divmenjadi lebih tinggi dan masih memiliki unsur-unsur vertikal terpusat, mengatur div's line-heightproperti bukan nya height. Ikuti tautan jsfiddle di atas untuk contoh.


Ini berhenti berfungsi jika Anda menentukan ketinggian untuk bagian luar div.
Abhranil Das

4
@AbhranilDas vertical-alignrelatif terhadap baris teks saat ini, bukan elemen induk. Untuk membuat ini berfungsi seperti yang Anda inginkan, atur div line-heightbukan miliknya height.
Diego


5

Cukup mengambang kedua elemen yang tersisa mencapai hasil yang sama.

div {
background:yellow;
vertical-align:middle;
margin:10px;
}

a {
background-color:#FFF;
width:20px;
height:20px;
display:inline-block;
border:solid black 1px;
float:left;
}

span {
background:red;
display:inline-block;
float:left;
}

Masalah dengan mengapung mereka ke kiri adalah mereka akan membungkus ke baris berikutnya ketika browser menjadi terlalu kecil. Terkadang Anda membutuhkan item untuk tetap sejajar bahkan di luar batas browser dan karenanya, inline-blockadalah satu-satunya solusi.
Jake Wilson

Sementara masalah pembungkusan bisa menjadi masalah, saya akan mengatakan bahwa ini adalah solusi yang sangat baik untuk kasus-kasus di mana pembungkus tidak apa-apa. Itu elegan, berbicara dengan semangat efek yang diinginkan dan tidak memerlukan modifikasi kepada orang tua.
Crispen Smith

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.