@BoltClock'un bahsettikleri oldukça sağlam. Ve burada sadece bu soruna birkaç çözüm daha eklemek istiyorum. bu w3c_collapsing kenar boşluğunu kontrol edin . Yeşil kısımlar, bu sorunun nasıl çözülebileceği konusunda potansiyel düşüncedir.
Çözüm 1
Yüzen bir kutu ile diğer herhangi bir kutu arasındaki kenar boşlukları çökmez (bir şamandıra ile akış içi çocuklar arasında bile).
bu float:left
da #outer
ya #inner
demo1 'i ekleyebileceğim anlamına gelir .
Ayrıca , marjın float
geçersiz kılınacağına dikkat edin auto
.
Çözüm 2
Yeni blok biçimlendirme bağlamları oluşturan öğelerin kenar boşlukları (şamandıralar ve 'görünür' dışında 'taşma' olan öğeler) akış içi çocuklarıyla daralmaz.
başka visible
, overflow: hidden
içine koyalım #outer
. Ve bu şekilde oldukça basit ve iyi görünüyor. Bunu sevdim.
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
overflow: hidden;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
Çözüm 3
Kesinlikle konumlandırılmış kutuların kenar boşlukları çökmez (akış içi çocuklarında bile).
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: absolute;
}
#inner{
background: #FFCC33;
height: 50px;
margin: 50px;
}
veya
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: relative;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
position: absolute;
}
bu iki yöntem normal akışını div
Çözüm 4
Satır içi blok kutuların kenar boşlukları çökmez (akış içi çocuklarında bile).
@enderskill ile aynı
Çözüm 5
Akış içi blok düzeyindeki bir öğenin alt kenar boşluğu, bu kardeşte boşluk olmadığı sürece, bir sonraki akış içi blok düzeyindeki kardeşinin üst kenar boşluğu ile daima çöker.
Kardeşler arasındaki çöküş marjı olduğu için bunun soru ile ilgisi yoktur. genellikle bir üst kutunun margin-bottom: 30px
ve bir kardeş kutunun olup olmadığı anlamına gelir margin-top: 10px
. Aralarındaki toplam marj 30px
yerine 40px
.
Çözüm 6
Bir akış içi blok öğesinin üst kenar boşluğu, öğenin üst sınırı yoksa, üst dolgusu yoksa ve çocuğun boşluğu yoksa, ilk akış içi blok seviyesi çocuğun üst kenar boşluğu ile çöker.
Bu çok ilginç ve sadece bir üst kenarlık çizgisi ekleyebilirim
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
border-top: 1px solid red;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
Ve ayrıca <div>
varsayılan olarak blok seviyesidir, bu yüzden bilerek bildirmeniz gerekmez. Acemi itibarım nedeniyle 2'den fazla bağlantı ve resim yayınlayamadığım için üzgünüm. En azından benzer bir şey gördüğünüzde sorunun nereden geldiğini biliyorsunuz.