2015-09-25 100 views
0

這是一個分拆Display Table-Cell: Remove Right and Left Border Space?四列等寬,0外邊距,相等內邊距

我試圖創建一個解決方案使用divs和等寬的內邊距,但我得到不必要的間距導致我的最後一個div換行。

https://jsfiddle.net/kyy7qgLz/1/

* { 
    margin: 0; 
    padding: 0; 
    border: 0; 
} 
#container { 
    width: 100%; 
    background-color: blue; 
} 
.item { 
    margin-left: 4%; 
    width: 22%; 
    display: inline-block; 
    background-color: red; 
} 
.item:first-of-type { 
    margin-left: 0%; 
} 

<div id="container"> 
    <div class="item"> 
     Text 1 
    </div> 
    <div class="item"> 
     Text 2 
    </div> 
    <div class="item"> 
     Text 3 
    </div> 
    <div class="item"> 
     Text 4 
    </div> 
</div> 

哪裏是多餘行距來自何處,我如何擺脫它?

回答

2

這裏的乾淨的解決方案是使用Flexbox的。當您使用display: inline-block時,您說「將這些元素渲染爲文本塊」,以便瀏覽器正確顯示您包含在HTML元素之間的空白區域。

如果您在容器上設置了display: flex,您將更準確地描述您打算的佈局。也就是說,你會說這個容器的直接孩子應該使用彈性佈局(而不是用於文本的佈局)。

* { 
 
    margin: 0; 
 
    padding: 0; 
 
    border: 0; 
 
} 
 
#container { 
 
    background-color: blue; 
 
    display: flex; 
 
} 
 
.item { 
 
    margin-left: 4%; 
 
    flex: 1 0 auto; 
 
    background-color: red; 
 
} 
 
.item:first-of-type { 
 
    margin-left: 0%; 
 
}
<div id="container"> 
 
    <div class="item"> 
 
     Text 1 
 
    </div> 
 
    <div class="item"> 
 
     Text 2 
 
    </div> 
 
    <div class="item"> 
 
     Text 3 
 
    </div> 
 
    <div class="item"> 
 
     Text 4 
 
    </div> 
 
</div>

+0

這個伎倆。我甚至使用flex justify-content將它清理了一下。 https://jsfiddle.net/kyy7qgLz/2/ –

+0

幹得好!錯過了你所要求的等寬邊距。 – Zaqx

3

你需要你的HTML元素之間進行評論(或刪除)的空間(或換行)當你想inline-block的元素不被espaced:

<div id="container"> 
    <div class="item"> 
     Text 1 
    </div><!-- 
    --><div class="item"> 
     Text 2 
    </div><!-- 
    --><div class="item"> 
     Text 3 
    </div><!-- 
    --><div class="item"> 
     Text 4 
    </div> 
</div> 
+1

或者使用'DIV#容器{字體大小:0}'。我堅信乾淨的代碼,所以這最終成爲最乾淨的解決方案:) – David

+0

由於CSS是造型,我不認爲這是一個'乾淨'的解決方案。但這是我的看法。如果你不想在你的元素之間留出空間,刪除它們,不要讓它們顯示爲0.我在我的答案「(或刪除)」中說過,這是我通常所做的。 – dievardump

+0

Eh pohtato pohtahto。我可以爭辯說間距是造型元素。我認爲在我的css文件中有一行代碼,而不是一堆''在我的HTML中看起來更漂亮,但這是我的看法。 – David