2012-07-12 76 views
5

我有幾個DIV顯示爲內嵌塊;而且他們似乎在瀏覽器間自動應用間距。他們將margin/padding設置爲0.是否有一種方法可以在不使用負邊界的情況下進行糾正?內聯塊無邊距?

回答

8

山姆,你看到的空間實際上是空白。這就是爲什麼刪除填充和邊距不會做任何事情的原因。讓我解釋。當你有這樣的:

HTML

<div> 
    a 
    a 
    a 
    a 
</div> 

這是它是如何呈現:

a a a a 

...對不對?

所以,如果你有這樣的:

<div> 
    <div style="display:inline-block"></div> 
    <div style="display:inline-block"></div> 
    <div style="display:inline-block"></div> 
</div> 

...你會得到同樣的事情:

block [space] block [space] block 

現在......也有這個問題很多不同的解決方案。我認爲,最常見的是在HTML註釋掉空白:

<div> 
     <div style="display:inline-block"></div><!-- 
     --><div style="display:inline-block"></div><!-- 
     --><div style="display:inline-block"></div> 
    </div> 

我不喜歡它,但 - 我更喜歡保持HTML儘可能乾淨。我的首選方法是將父級的字體大小設置爲0,然後在內聯塊上自行設置所需的字體大小。像這樣:

div { 
    font-size: 0; /* removes the whitespace */ 
} 

div div { 
    display: inline-block; 
    font-size: 14px; 
} 
+0

+1 - 兩者都是很好的解決方案。 – Wex 2012-07-12 22:03:48

2

您不需要使用負邊距來抵消原始邊距。

相反,你可以用下面的覆蓋它們:

* { margin:0; }

或:

.div { margin:0; }

,如果它是特定元素。

編輯:

它出現的問題可能是不期望的空白的結果。例如:

<div style="display:inline-block"> 
    ... 
</div> 
<div style="display:inline-block"> 
    ... 
</div> 

兩個分隔符之間存在空白區域,因此瀏覽器將打印空白區域。要解決此問題,您需要將其更改爲:

<div style="display:inline-block"> 
    ... 
</div><div style="display:inline-block"> 
    ... 
</div> 

祝您好運!

+0

*做什麼? – Sam 2012-07-12 20:14:20

+0

*是CSS中的通配符,表示給定文檔中的所有元素。 – 2012-07-12 20:15:31

+0

這似乎不能解決我的利潤問題。也許「利潤率」是錯誤的術語。我有幾個div彼此相鄰,瀏覽器默認它們之間的間距;即使它們設置爲magin 0和填充0. – Sam 2012-07-12 20:19:51

0

inline-block的原本是IE6破解

這是其用於:

  • 要解決的浮動元素
  • 到IE6雙重利潤的錯誤將多個塊狀元素放置在同一水平線上 而不會浮動它們(如果不能浮動,則出現例外情況)
  • 要允許內聯元素噸至具有寬度和/或高度,同時仍然 剩下的直列
  • 要允許一個內聯元素有邊距或利潤

所以,如果你想有多個div旁邊的海誓山盟,請使用float,它會解決很多的你的CSS問題,inline-block的可引起,尤其是跨瀏覽器發出

更多關於inline-block的here arcticle 9.2.4

問候 SP

請評論,如果不同意

+0

內嵌塊不是黑客,它允許元素像文本的一部分一樣流動。你有關使用float的建議很糟糕。不必要的使用float會導致可維護性問題,這可能意味着您的網站無法響應不同的屏幕/窗口大小,而且設計不佳。 – Jake 2015-05-17 01:09:53

+0

行內塊有一些問題,所以它鬆散鬆散,我同意浮動不是理想的解決方案,但你沒有在IE6內聯塊,所以這就是爲什麼我會去浮動作爲後備。 – 2015-05-18 11:21:44

0

另一種方式我已經找到了方法改變父容器上的字間距爲我工作https://jsfiddle.net/1ex5gpo3/2/

.parent { 
    word-spacing: -1em; 
} 

.child { 
    word-spacing: normal; 
    display: inline-block; 
}