span i等行內元素之間出現的詭異間隔

2022-03-19 22:38:16 字數 910 閱讀 6114

最近在做的乙個專案裡面碰到這麼乙個問題:

one

two

在「one」和「two」之間存在著乙個大概3em的空白...圖就不上了

這明顯不符合預期....

最後發現:當這兩個span寫在一行...問題就解決了...

one

two

原因在於 行內元素之間在換行時會產生乙個換行符號,然後會占用一定的寬度...

同理 i 之類的行內元素也是會存在一樣的問題

並且這個寬度是小於乙個空格的...

/***********************更新*************/

之前的解決方法是,把所有的span都寫到一行,這當然是最穩妥的做法,但是帶來的麻煩肯定是有的...這意味著需要書寫一行特別特別長的**,按照**規範來看,一行**是最好不要超過50還是200個字元來著....(具體請參閱efe**規範)

所以有三種解決方法:

1、在js裡拼接好字串後再通過innerhtml方法顯示出來

2、這個空白貌似確實就是3em大小,所以只要設定span的margin-right: -3em即可,親測有效,唯一不爽的地方是,如果行內存在i  em之類其他的元素,每個元素都得設定一下margin-right,並不是很爽= =!

3、換行符號的寬度是由所在標籤的字型大小有關,以上面的**為例,p的font-size越大,塊1與塊2之間的空白就越寬,反之則越小。

所以解決方案就是:將p的font-size設為0,然後對應的字型重新設定

ps:江湖偏方,將span元素設定浮動,間隙瞬間沒有啦!

綜上所述:

1、span標籤較短,可直接將標籤寫在一行,簡單粗暴;

2、標籤較長,使用font-size:0去做

3、保險方案使用js字串拼接,高、大、上!

清除行內元素之間的HTML空白

原文連線 remove whitespace between inline block elements 原文日期 2013年8月27日 翻譯日期 2013年8月28日 至今我還記得年輕是在ie6上開發的那些苦逼日子,特別希望ie瀏覽器採用 inline block 的顯示方式.行內塊 inline...

行內元素之間間距的產生與去除

好多隨筆都是栽過的坑,然而誰不是這麼過來的呢o o 其實之前也模模糊糊記得這個問題,但是記憶體不夠,又沒有仔細研究,所以忘了,以致於栽了。網上基本上說的都是 inline block間距 然而本菜雞求嚴謹,更貼切地說,應該是inline和inline block。即使我已經用萬用字元清除內外邊距了,...

行內塊元素之間預設間距問題

為了個文件結構條理性,我也來個前言,雖然不知道寫個啥。但向大神學習態度不能丟。因為這個問題簡單,邏輯性不強,就直接上問題上 上解決方案了。大神勿噴,有什麼問題,別的解決方案方法,希望大神們多多指點 行內塊元素之間,瀏覽器會有乙個預設的間距,例如 之間的間距,或者是別的元素型別直接轉換過來的行內塊元素...