Pertimbangkan kode berikut :
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
width: 300px;
border: 1px solid red;
}
#second {
border: 1px solid green;
}
<div id="wrapper">
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>
Saya ingin dua div berada di sebelah satu sama lain di dalam wrapper div. Dalam hal ini, ketinggian div hijau harus menentukan ketinggian bungkusnya.
Bagaimana saya bisa mencapai ini melalui CSS?
#wrapper { display: flex; }
Jawaban:
Apung satu atau kedua div bagian dalam.
Mengambang satu div:
atau jika Anda mengapung keduanya, Anda harus mendorong pembungkusnya untuk memuat anak-anak yang melayang, atau itu akan berpikir itu kosong dan tidak menempatkan perbatasan di sekitar mereka
Mengambang kedua div:
sumber
overflow:auto
#wrapper Jadi ukurannya masih akan menyesuaikan dengan ukuran konten. (Tanpa perlu jelas: kedua elemen)overflow: hidden
melakukan pekerjaan dengan baik di sini! Namun, itu masih agak ajaib bagiku. Saya pikir ituoverflow: hidden
harus menyembunyikan konten jika tidak sesuai dengan wadahnya. Tapi, di sini perilakunya sedikit berbeda. Bisakah Anda menjelaskannya?overflow
properti akan menghapus mengapung baik vertikal dan horizontal yang mengapa dalam contoh pertama saya,#second
tidak perlu margin kiri, properti overflow bekerja selama nilai itu tidakvisible
.. saya lebih suka tersembunyi untuk auto bagi mereka yang baru dalam skenario kasus sehingga bilah gulir tidak dihasilkan secara tidak sengaja (yang otomatis akan dilakukan) .. bagaimanapun juga tidak akan ada konten yang tersembunyi skenario seperti ini karena hanya akan disembunyikan jika melampaui lebar 500px Anda tetapi selama tidak ada konten ketinggian akan bungkus dalam lebar seperti biasa .. tidak bersembunyi;)Memiliki dua divs,
Anda juga bisa menggunakan
display
properti:Contoh jsFiddle di sini .
Jika
div1
melebihi ketinggian tertentu,div2
akan diletakkan di sebelah sebelahdiv1
bawah. Untuk mengatasi ini, gunakanvertical-align:top;
padadiv2
.Contoh jsFiddle di sini .
sumber
div
dibuatinline
Anda tidak perlu menyimpan spasi, baris baru dll di antara mereka dalam HTML Anda. Jika tidak, browser akan membuat spasi di antara mereka. Lihat Fiddle ini : Anda tidak dapat mengatur agar keduanya tetap beradadiv
di baris yang sama kecuali jika Anda menempatkan tag mereka tanpa di antaranya.Anda bisa duduk elemen bersebelahan dengan menggunakan properti float CSS:
Anda harus memastikan bahwa pembungkus div memungkinkan untuk mengapung dalam hal lebar, dan margin dll diatur dengan benar.
sumber
Coba gunakan model flexbox. Mudah dan singkat untuk menulis.
Jsfiddle hidup
CSS:
arah default adalah baris. Jadi, ia sejajar satu sama lain di dalam #wrapper. Tetapi tidak didukung IE9 atau kurang dari versi itu
sumber
flex
. Terima kasih!ini solusinya:
demo Anda diperbarui;
http://jsfiddle.net/dqC8t/1/
sumber
overflow: auto;
masih berfungsi. Bisakah Anda memberi contoh di mana itu diperlukan?margin: 0 0 0 302px;
karena itu tergantung padawidth: 300px;
. Tapi Terimakasih!!Pilihan 1
Gunakan
float:left
pada keduadiv
elemen dan atur% lebar untuk kedua elemen div dengan lebar total gabungan 100%.Gunakan
box-sizing: border-box;
pada elemen div mengambang. Kotak batas nilai memaksa padding dan berbatasan dengan lebar dan tinggi alih-alih memperluasnya.Gunakan clearfix pada
<div id="wrapper">
untuk menghapus elemen anak mengambang yang akan membuat skala div pembungkus ke ketinggian yang benar.http://jsfiddle.net/dqC8t/3381/
pilihan 2
Gunakan
position:absolute
pada satu elemen dan lebar tetap pada elemen lainnya.Tambahkan posisi: relatif ke
<div id="wrapper">
elemen untuk membuat elemen anak benar-benar posisi ke<div id="wrapper">
elemen.http://jsfiddle.net/dqC8t/3382/
Opsi 3
Gunakan
display:inline-block
pada keduadiv
elemen dan atur% lebar untuk kedua elemen div dengan lebar total gabungan 100%.Dan lagi (sama seperti
float:left
contoh) digunakanbox-sizing: border-box;
pada elemen div. Kotak batas nilai memaksa padding dan berbatasan dengan lebar dan tinggi alih-alih memperluasnya.CATATAN: elemen inline-blok dapat memiliki masalah spasi karena dipengaruhi oleh spasi di markup HTML. Informasi lebih lanjut di sini: https://css-tricks.com/fighting-the-space-between-inline-block-elements/
http://jsfiddle.net/dqC8t/3383/
Opsi terakhir adalah menggunakan opsi tampilan baru bernama flex, tetapi perhatikan bahwa kompatibilitas browser mungkin bisa dimainkan:
http://caniuse.com/#feat=flexbox
http://www.sketchingwithcss.com/samplechapter/cheatsheet.html
sumber
float
jangan mengapungkan kapalku.inline-block
batu. (Maaf.)Cobalah untuk menggunakan perubahan kode di bawah ini untuk menempatkan dua div di depan satu sama lain
Tautan JSFiddle
sumber
Sangat mudah - Anda bisa melakukannya dengan cara yang sulit
atau cara mudah
Ada juga jutaan cara lain.
Tapi saya hanya dengan cara mudah. Saya juga ingin memberi tahu Anda bahwa banyak jawaban di sini salah Tapi kedua cara yang saya tunjukkan setidaknya berfungsi dalam HTML 5.
sumber
Ini adalah jawaban CSS3 yang tepat. Semoga ini membantu Anda entah bagaimana sekarang: D Saya benar-benar merekomendasikan Anda untuk membaca buku: https://www.amazon.com/Book-CSS3-Developers-Future-Design/dp/1593272863 Sebenarnya saya telah membuat solusi ini dengan membaca buku ini sekarang . : D
sumber
Tambahkan
float:left;
properti di kedua div.Tambahkan
display:inline-block;
properti.Tambahkan
display:flex;
properti di div induk.sumber
Pendekatan saya:
CSS:
sumber
sumber
Di UI materi dan react.js Anda bisa menggunakan kisi
sumber