2016-11-17 147 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