2016-04-07 12 views
2

Ben gibi bir konteynerin içinde itens yüzen kullanılırken:Bir konteynerin sağında boş alanlardan nasıl kurtulacaksınız?

Kanunu (http://jsfiddle.net/tombrito/gx7kL330/7/): Ben penceresini yeniden boyutlandırmak eğer

.container { 
 
    background: blue; 
 
    position: absolute; 
 
    width: auto; 
 
} 
 
.floating-box { 
 
    float: left; 
 
    width: 150px; 
 
    height: 75px; 
 
    margin: 10px; 
 
    border: 3px solid #73AD21; 
 
}
<div class="container"> 
 
    <div class="floating-box">Floating box</div> 
 
    <div class="floating-box">Floating box</div> 
 
    <div class="floating-box">Floating box</div> 
 
    <div class="floating-box">Floating box</div> 
 
    <div class="floating-box">Floating box</div> 
 
    <div class="floating-box">Floating box</div> 
 
    <div class="floating-box">Floating box</div> 
 
    <div class="floating-box">Floating box</div> 
 
</div>

..., görüyorum kapsayıcının width: auto içeriği tam olarak geniş değil:

enter image description here

Sağda boş alan var. Yeniden boyutlandırdığımda bile, kapsayıcıyı gerçekten yüzen çocukların genişliği haline getirmenin bir yolu var mı?

+0

Bu sorunun cevabını deneyin uyarı // denenmemiş kodu (http://stackoverflow.com/questions/18482505/having-the-floating-children-elements-determine-parent-width) ama sanırım daha fazla öğeniz varsa mücadele edeceksiniz diye düşünürsünüz ki ... – Stuart

+0

Eğer bootstrap kullanırsanız o zaman kolay olacak ya da jQuery fonksiyonu yaratabilirsiniz. –

+0

Temel olarak ... hayır. Bu çizgi kutusu modeli çalışma şekli değil. –

cevap

0

Flexbox kurallarını kullanabilirsiniz. (source)

html:

<ul class="flex-container"> 
    <li class="flex-item">1</li> 
    <li class="flex-item">2</li> 
    <li class="flex-item">3</li> 
    <li class="flex-item">4</li> 
    <li class="flex-item">5</li> 
    <li class="flex-item">6</li> 
</ul> 

css:

.flex-container { 
    padding: 0; 
    margin: 0; 
    list-style: none; 

    display: -webkit-box; 
    display: -moz-box; 
    display: -ms-flexbox; 
    display: -webkit-flex; 
    display: flex; 

    -webkit-flex-flow: row wrap; 
    justify-content: space-around; 
} 

.flex-item { 
    background: red; 
    padding: 5px; 
    width: 200px; 
    height: 150px; 
    margin-top: 10px; 
    line-height: 150px; 
} 
+0

Hayır ... gerçekten yapamazsınız ... flexbox bile bunu yapamaz. OP'nin aradığı şey bu değil. –

+0

Kutuları alana dağıtacağım, ancak kapsayıcıyı içerik boyutuna sığacak şekilde küçük yapmak istiyorum. Her neyse, bu özellik hakkında bilmek ilginç ... :) –

0

jQuery bir seçenek ise, böyle bir şey yapacağını;

$('body').on('resize', function() { 
    var width = document.documentElement.clientWidth || window.innerWidth, 
     itemWidth = 150 + 20 + 6; //width + margin + border, 
     count = Math.floor(width/itemWidth), 
     containerWidth = itemWidth * count; 

    $('.container').css('width', containerWidth + 'px'); 
}); 

İlgili konular