2016-11-17 72 views
0

今天,我正面临着一个大问题,那就是将浮动元素居中设置自定义宽度。为了更好地解释我做了一个片段给你:以自定义宽度为中心定位浮动元素

body { text-align: center; } 
 
.square { 
 
    width: 20%; height: 100px; 
 
    background: cornflowerblue; 
 
    float: left; 
 
} 
 

 
.container { 
 
    display: inline-block; 
 
}
<div> 
 
    <div class="container"> 
 
    <div class="square">a</div> 
 
    <div class="square">b</div> 
 
    <div class="square">c</div> 
 
    </div> 
 
</div> 
 
<br> 
 
<div> 
 
    <div class="container"> 
 
    <div class="square">a</div> 
 
    <div class="square">b</div> 
 
    <div class="square">c</div> 
 
    <div class="square">d</div> 
 
    <div class="square">e</div> 
 
    </div> 
 
</div>

的问题是,前三个正方形得到定心后收缩。

我将元素浮动的原因是第二个容器必须与第一个容器相同,并且它必须包含5个元素(以覆盖文档的整个宽度)。这里是如何看起来像没有浮动(见元素之间的GABS):

body { text-align: center; } 
 
.square { 
 
    width: 20%; height: 100px; 
 
    background: cornflowerblue; 
 
    display: inline-block; 
 
} 
 

 
.container { 
 
    display: block; 
 
}
<div> 
 
    <div class="container"> 
 
     <div class="square">a</div> 
 
     <div class="square">b</div> 
 
     <div class="square">c</div> 
 
    </div> 
 
</div> 
 
<br> 
 
<div> 
 
    <div class="container"> 
 
     <div class="square">a</div> 
 
     <div class="square">b</div> 
 
     <div class="square">c</div> 
 
     <div class="square">d</div> 
 
     <div class="square">e</div> 
 
    </div> 
 
</div>

现在的元素有权宽度,但第二线不包括因的文档宽度元素之间的gabs。

有什么办法让自定义宽度居中的浮动元素?我应该使用哪种样式的容器元素?

+0

正方形应该是内嵌块并且没有浮点,容器应该是显示块。 –

+0

@SalmanA正方形必须浮动,我会编辑我的帖子。 – PDKnight

+0

您是否尝试在容器样式中添加宽度:自动填充:在正方形中填充20px以查看正方形 –

回答

1

OK,我想我得到了你所需要的

.square { 
width: 20%; height: 100px; 
background: cornflowerblue; 
display: inline-block; 
font-size: 1rem; 
} 

.container { 
display: block; 
font-size:0; 
} 

jsfiddle

+0

我会编辑我的帖子以获得更好的解释。 – PDKnight

+0

我编辑了我的代码 – Vel

+0

就是这样,我完全忘记了元素之间的空白(因为多年前我用过它)。谢谢!此外,这个HTML技巧也可以工作;)https:// jsfiddle。net/vdjk8jd0/5/ – PDKnight

0
body { text-align: center; } 
.square { 
    width: 20%; height: 100px; 
    background: cornflowerblue; 
    float: left; 

} 

.container { 
width:100%; 
margin-right:20%; 
margin-left:20%; 
} 

您正在寻找这样的事情?

+0

试着看看我编辑过的帖子:) – PDKnight

0

添加min-width:7px;这将解决您的问题

body { text-align: center; } 
 
.square { 
 
    width: 20%; 
 
    height: 100px; 
 
    background: cornflowerblue; 
 
    float: left; 
 
    min-width:7px; 
 
} 
 

 
.container { 
 
    display: inline-block; 
 
}
<div> 
 
    <div class="container"> 
 
     <div class="square">a</div> 
 
     <div class="square">b</div> 
 
     <div class="square">c</div> 
 
    </div> 
 
</div> 
 
<br> 
 
<div> 
 
    <div class="container"> 
 
     <div class="square">a</div> 
 
     <div class="square">b</div> 
 
     <div class="square">c</div> 
 
     <div class="square">d</div> 
 
     <div class="square">e</div> 
 
    </div> 
 
</div>

这里你5格列时代也在努力。

+0

差不多。元素的宽度必须设置为20%。 – PDKnight

+0

但为何如此? – jafarbtech

+0

如上所述,我需要覆盖整个文档宽度的最后一行正方形,它们必须具有相同的宽度(因此,100%/ 5 = 20%)。 – PDKnight