Dalam CSS, overflow:hidden
disetel pada penampung induk untuk memungkinkannya meluas dengan ketinggian turunannya yang mengambang.
Tetapi itu juga memiliki fitur menarik lainnya jika dikombinasikan dengan margin: auto
...
Jika SEBELUMNYA saudara kandung adalah elemen mengambang, itu benar-benar akan muncul disandingkan dengannya. Artinya, jika saudara kandung float:left
maka wadah dengan float:none overflow:hidden
akan muncul di sebelah kanan saudara kandung, tidak ada baris baru - sama seperti mengambang di aliran normal. Jika saudara sebelumnya adalah float:right
maka wadah akan muncul di sebelah kiri saudara kandung. Mengubah ukuran penampung ini akan menunjukkannya secara akurat di tengah di antara elemen mengambang. Katakanlah jika Anda memiliki dua saudara sebelumnya, satu sama float:left
lain float:right
, wadah akan muncul di tengah di antara keduanya.
Jadi, inilah masalahnya ...
Bagaimana cara mempertahankan jenis tata letak itu TANPA menutupi anak-anak?
Googling di seluruh web memberi saya cara tentang cara clear:both
dan memperluas penampung ... tetapi saya tidak dapat menemukan solusi alternatif untuk mempertahankan pemusatan kiri / kanan sebelumnya-anak. Jika Anda membuat penampung, overflow:visible
maka penampung tersebut tiba-tiba mengabaikan aliran tata letak elemen mengambang dan muncul berlapis di atas elemen mengambang.
Jadi pertanyaannya :
Saya harus memiliki wadah overflow:hidden
untuk melestarikan tata letak ...
bagaimana caranya agar anak-anak tidak bertopeng? Saya perlu agar anak benar-benar diposisikan relatif terhadap orang tua di luar wadah.
ATAU
Bagaimana caranya overflow:visible
agar saya bisa benar-benar memposisikan anak relatif terhadap induk di luar wadah ... NAMUN melestarikan saudara kandung float-like-layout-flow?
overflow:hidden
sama sekali. Menerapkan clearfix ke div induk tidak mengizinkan semua komponen anak "dimuat dalam" ketinggian yang sama dengan induknya.Tak satu pun dari jawaban yang diposting berhasil untuk saya. Namun, pengaturan
position: absolute
untuk elemen anak berhasil.sumber
position: fixed
atau absolut diposisikan relatif terhadap sesuatu di luar induk yang dimilikinyavisibility: hidden
, itu akan terlihat. Namun, Anda sering perlu (ingin) memposisikannya relatif terhadap induk agar lebih kuat terhadap perubahan kode. Maka solusi ini bukanlah alternatif.Ini adalah pertanyaan lama, tetapi saya menemukannya sendiri.
Saya memiliki solusi semi yang sesuai untuk pertanyaan sebelumnya ("Anak-anak terlihat dalam luapan: orang tua tersembunyi")
Jika div induk tidak perlu berupa position: relative, cukup setel gaya anak ke visibility: visible.
Jika div induk memang perlu menjadi position: relative, satu-satunya cara yang mungkin saya temukan untuk menunjukkan anak-anak adalah position: fixed. Ini berhasil untuk saya dalam situasi saya cukup beruntung, tetapi saya membayangkan itu tidak akan berhasil pada orang lain.
Berikut adalah contoh jelek yang baru saja dikirim ke file html untuk dilihat.
<div style="background: #ff00ff; overflow: hidden; width: 500px; height: 500px; position: relative;"> <div style="background: #ff0000;position: fixed; top: 10px; left: 10px;">asd <div style="background: #00ffff; width: 200px; overflow: visible; position: absolute; visibility: visible; clear:both; height: 1000px; top: 100px; left: 10px;"> a</div> </div> </div>
sumber
left
.margin-left
Sebaliknya, menggunakan akan menghasilkan efek yang sama, jadi saya tidak perlu menggunakan posisi relatif lagi.Bagi orang lain, jika clearfix tidak menyelesaikannya untuk Anda, tambahkan margin ke saudara non-float yang sama dengan lebar saudara kandung yang mengambang.
sumber