2016-11-27 95 views
0

我想要一些解决方案来根据孩子在多线时的孩子宽度来调整容器的宽度。当孩子只在一行时,然后显示:容器元素的内联块使我所需要的。但是,当它们在多行上时,容器的行为与display:block相同。当孩子在多线上时根据孩子的宽度调整容器的宽度

我所知道的只有两种解决方案: 1)将容器最大宽度设置为儿童宽度的一些乘积。但它不是一个通用的解决方案(我的意思是显示在分辨率较低的设备上)。

2)使用jQuery来计算容器宽度。但我宁愿使用一些纯粹的HTML/CSS解决方案。

HTML:

<div id="wrapper1">  
    <div id="wrapper2">     
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
     <div class="el"> 
     </div>   
    </div>   
</div> 


    <div id="wrapper2">     
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    <div class="el"> 
    </div>   
    </div>   
</div> 

CSS:

#wrapper1{ 
    max-width:1200px; 
    margin:auto; 
} 
#wrapper2{ 
    background: #FF0; 
    display:inline-block; 
} 
.el{ 
    float:left; 
    margin:10px; 
    width:200px; 
    height:200px; 
    background:#00F; 
} 

回答

1

请测试:

#wrapper1{ 
display: -webkit-flex; 
-webkit-flex-wrap: wrap; /* Safari 6.1+ */ 
display: flex; 
flex-wrap: wrap; 
justify-content: center; 
-webkit-justify-content: center; 
} 

#wrapper2{ 
max-width:880px; 
display: -webkit-flex; 
-webkit-flex-wrap: wrap; /* Safari 6.1+ */ 
display: flex; 
flex-wrap: wrap; 
justify-content: space-between; 
-webkit-justify-content: space-betweeen; 
} 

这里有一个例子: Sample

点击开始页面上看到的网页后,我认为这是你想要的。

+0

好吧,它似乎很棒。 –

+0

Flex盒子在响应式设计中非常有用。如果你想阅读,w3Scools是非常好的学习。 –

0

#wrapper1{ 
 
    width:1200px; 
 
} 
 
#wrapper2{ 
 
    display:inline-block; 
 
} 
 
.el{ 
 
    width:200px; 
 
    height:200px; 
 
    background:#00F; 
 
} 
 
.ul{ 
 
    padding: 20px; 
 
    float:left; 
 
    width:200px; 
 
    height:200px; 
 
    background: #FF0; 
 
}
<div id="wrapper1"> 
 
    <div id="wrapper2"> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    <div class="ul"> 
 
     <div class="el"></div> 
 
    </div> 
 
    </div> 
 
</div>

+0

谢谢,但这不是我发现的。我需要在儿童之间保持相同的差距,并且它必须以较低的分辨率工作。在你的情况下,#wrapper1的宽度被强制设置为1200px。其实我需要一些方法来自动减少#wrapper2的宽度。在普通视图中,它将具有1100px(线上的5个元素,其宽度为200px,边距为2 * 10px)。理想情况下,在较小的屏幕上,它将是880px(在线4个元素),660(3),440(2),220(1) –

+0

#wrapper1 { max-width:1200px; } #wrapper2 { width:auto; display:inline-block; } – Yevhen

相关问题