2017-04-09 14 views
0

這個非常簡單的HTML結構HTML/CSS白色的空間仍然存在,甚至評論新線

<div id="s1container"><!-- 
    --><div class="s1box"></div><!-- 
--></div> 

已經評價嘗試刪除元素之間的白色空間,用下面的CSS仍然會產生不必要的填充後在這兩個元素之間的底部

#s1container { 
     background: gray; 
     text-align: center; 
    } 

    .s1box { 
     position: relative; 
     display: inline-block; 
     width: 200px; 
     height: 200px; 
     background: #ccc; 
     padding: 0; 
     margin: 0; 
    } 

你可以從這個小提琴看到

https://jsfiddle.net/um1L4c0t/

解決此問題的唯一方法是將父級的font-size設置爲0em,並將其設置回1em給孩子,考慮到我廣泛使用em單元作爲方塊,這不是一種解決方案尺寸,EMS的嵌套特性會做出那樣的佈局是不可能的,如果父母的字體大小設置爲0EM

爲什麼是白色的空間,即使這些元素之間註釋掉的空格後仍然存在?

+0

在Chrome中至少將內容添加到'.slbox'甚至'' 似乎事後https://jsfiddle.net/um1L4c0t/1/移除空白不清楚爲什麼。值得一提的,雖然我不認爲評論有什麼關係這一問題上的Firefox – Brian

+0

作品也是,我不知道這是什麼 –

+1

背後的魔能只是一個僞元素,如果你想我想破解它 - 不應該'太亂了佈局:'.s1box:after {content:「\ a0」; }'https://jsfiddle.net/um1L4c0t/3/ – Brian

回答

2

評論取出正確的空格,vertical-align: top;擺脫底部。

* { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
#s1container { 
 
    background: gray; 
 
    text-align: center; 
 
} 
 

 
.s1box { 
 
    position: relative; 
 
    display: inline-block; 
 
    width: 200px; 
 
    height: 200px; 
 
    background: #ccc; 
 
    padding: 0; 
 
    margin: 0; 
 
    vertical-align: top; 
 
}
<div id="s1container"><!-- 
 
--><div class="s1box"></div><!-- 
 
--></div>


更先進的方法是使用flexbox,你來自哪裏,兩全其美得到良好

* { 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
#s1container { 
 
    background: gray; 
 
    text-align: center; 
 
    display: flex; 
 
} 
 

 
.s1box { 
 
    width: 200px; 
 
    height: 200px; 
 
    background: #ccc; 
 
    padding: 0; 
 
    margin: 0 auto; 
 
}
<div id="s1container"> 
 
<div class="s1box"></div> 
 
</div>

+1

你能解釋爲什麼評論空白不起作用,爲什麼有必要使用垂直對齊? –

+1

@RowRebel內聯元素表現爲字符,右下角有空格,所以字符不會互相摺疊。有很多方法可以擺脫它們,而「vertical-align」就是其中之一。你可以在這裏閱讀更多,[css-white-space /](https://www.impressivewebs.com/css-white-space/),這裏[white-space-image-elements-inline-elements-descenders/](https://mor10.com/removing-white-space-image-elements-inline-elements-descenders/) – LGSon

+0

@RowRebel新增的第二方法來我的回答 – LGSon

1

雷莫ve display:inline-block;並使用margin:0 auto;

+0

這是一種過度簡化示例中,顯示:內聯塊在網站的實際實施中需要 –

相關問題