inline-block間距產(chǎn)生的原因饭弓,去除inline-block間距的方法双饥?及這個(gè)問(wèn)題未來(lái)可能的解決方向。

大家好弟断,我是IT修真院深圳分院第3期的學(xué)員咏花,一枚正直純潔善良的前端程序員,今天給大家分享一下阀趴,修真院官網(wǎng)前端工程師深度思考中的知識(shí)點(diǎn)——inline-block間距產(chǎn)生的原因昏翰,去除inline-block間距的方法?及這個(gè)問(wèn)題未來(lái)可能的解決方向刘急。



一.背景介紹

1棚菊、inline-block到底是什么?

關(guān)于inline-block在display里的英文解釋:

This value causes an

element to generate an inline-level block container. The inside of an

inline-block is formatted as a block box, and the element itself is

formatted as an atomic inline-level box.

大致意思就是:inline-block 后的元素創(chuàng)建了一個(gè)行級(jí)的塊容器排霉,該元素內(nèi)部(內(nèi)容)被格式化成一個(gè)塊元素窍株,同時(shí)元素本身則被格式化成一個(gè)行內(nèi)元素。

一句話解釋:它是一個(gè)格式化為行內(nèi)元素的塊容器攻柠。

兼具行內(nèi)元素和塊元素的特點(diǎn)。

2后裸、inline-block為什么會(huì)有間距瑰钮?

歸根結(jié)底這是一個(gè)西文排版的問(wèn)題。舉一個(gè)很簡(jiǎn)單的例子:

I am very happy

南京市長(zhǎng)江大橋歡迎您

英文有空格作為詞分界微驶,而中文則沒(méi)有浪谴。(這背后延伸出一個(gè)中文分詞的問(wèn)題)

這個(gè)問(wèn)題的原因可以上述到SGML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)和TeX(排版工具),它實(shí)際上是一個(gè)行內(nèi)(inline)的問(wèn)題因苹,它由空格苟耻、換行或回車(chē)所產(chǎn)生空白符所致


二.知識(shí)剖析

既然知道問(wèn)題產(chǎn)生的原因,解決方法就由此得出扶檐。

1凶杖、改變代碼書(shū)寫(xiě)方式。

2款筑、改變字符大小智蝠。

3腾么、改變?cè)亻g距。


三.常見(jiàn)問(wèn)題

常見(jiàn)去除inline-block間距的方法有哪些杈湾?

小姐姐鎮(zhèn)樓



四.解決方案

方法1: 改變書(shū)寫(xiě)方式

方法2:font-size

方法3:使用margin負(fù)值

方法4:使用word-spacing或letter-spacing

這些方法在網(wǎng)上能查到很詳細(xì)的說(shuō)明解虱,我就簡(jiǎn)略記錄一下。

方法1:改變書(shū)寫(xiě)方式

元素間留白間距出現(xiàn)的原因就是標(biāo)簽段之間的空格漆撞,因此殴泰,去掉HTML中的空格,自然間距就消失了浮驳。



我們可以把inline-block元素寫(xiě)在同一行艰匙,這種方案是最直接的解決方案,但卻也是最不靠譜的方案抹恳,存在很多不可控因素员凝。 很多場(chǎng)景會(huì)讓你崩潰:前后端協(xié)同;版本更迭奋献;他人接手健霹;自己忘了...,太多一不小心都可能讓這個(gè)方案失效瓶蚂。

考慮到代碼可讀性糖埋,顯然連成一行的寫(xiě)法是不可取的,我們可以進(jìn)行改進(jìn)窃这,還有下面非人類(lèi)的寫(xiě)法:


方法2:font-size

這個(gè)方法瞳别,基本上可以解決大部分瀏覽器下inline-block元素之間的間距。


方法3:使用margin負(fù)值

margin負(fù)值的大小與上下文的字體和文字大小相關(guān)杭攻,Arial字體的margin負(fù)值為-3像素祟敛,Tahoma和Verdana就是-4像素,而Geneva為-6像素兆解。由于外部環(huán)境的不確定性馆铁,以及最后一個(gè)元素多出的父margin值等問(wèn)題,這個(gè)方法不適合大規(guī)模使用锅睛。


方法4:使用word-spacing或letter-spacing

一個(gè)是字符間距(letter-spacing)一個(gè)是單詞間距(word-spacing)埠巨,大同小異。

letter-spacing子元素要設(shè)置letter-spacing為0现拒,不然會(huì)繼承父元素的值辣垒;使用word-spacing時(shí),只需設(shè)置父元素word-spacing為合適值即可印蔬。

使用letter-spacing和word-spacing時(shí)勋桶,其在不同瀏覽器下效果不同。




五.編碼實(shí)戰(zhàn)



六.擴(kuò)展思考

上面使用到的幾種方法都存在一定的缺陷,怎樣兼容盡可能多的瀏覽器哥遮?

在不同情況下選用不同的方法岂丘,font-size基本上可以解決大部分瀏覽器下inline-block元素之間的間距∶咭或者可以同時(shí)寫(xiě)多種方法奥帘,這樣就可以兼容不同瀏覽器

這個(gè)元素的屬性很奇特,剛出現(xiàn)的時(shí)候用得卻不多仪召,因?yàn)楫?dāng)初它在IE上的兼容性不好


window7上運(yùn)行的IE版本是IE8寨蹋,微軟已經(jīng)在2015年終止了對(duì)Windows 7的主流支持,準(zhǔn)備到2020年停止對(duì)window7的所有技術(shù)支持

現(xiàn)在全瀏覽器對(duì)inline-block兼容性都很好扔茅,CSS任務(wù)很多布局也是利用這個(gè)元素的特殊屬性來(lái)布局已旧。再加上CSS壓縮成一行完全解決空白字符間距問(wèn)題。有點(diǎn)得心應(yīng)手的感覺(jué)召娜。

但是自提出這個(gè)元素過(guò)去10多年运褪,現(xiàn)在更是出現(xiàn)flex、Grid這類(lèi)好用的排版布局方式玖瘸。他們確實(shí)有一些兼容性問(wèn)題秸讹。好消息是2017年9月27日CSS彈性盒子布局規(guī)范已處于最終征求意見(jiàn)稿階段,各大瀏覽器也漸漸支持彈性盒子的所有功能雅倒。

相信各位在css任務(wù)中剛接觸flex的時(shí)候驚為天人璃诀,以后它的應(yīng)用會(huì)越來(lái)越多,連B/S的4.0版也要加入flex屬性蔑匣,這個(gè)蛋疼的應(yīng)用問(wèn)題會(huì)隨著時(shí)間消失劣欢。

四種方法哪種更為實(shí)用呢?

全都不實(shí)用裁良,第一種不方便書(shū)寫(xiě)凿将,后幾種會(huì)導(dǎo)致內(nèi)容和格式的依賴性較強(qiáng),違背內(nèi)容與樣式分離的要求趴久。在實(shí)際布局中很少單純用inline-block排版丸相,經(jīng)常和float、position彼棍、flex配合使用。

我暫時(shí)知道的實(shí)用方法是用代碼壓縮膳算,原理是方法1的特性座硕,將代碼壓縮到一行。工具有Uglify等涕蜂』遥或者使用不產(chǎn)生額外空白節(jié)點(diǎn)或者支持空白控制的模板語(yǔ)言。比如Jade、Smarty({strip} | Smarty)等

這些方法都是在CSS控制空白字符壓縮特性尚未得到普遍支持之前使用的蜘拉。在網(wǎng)上搜索的信息都是2012年萨西、2013年的內(nèi)容。如果項(xiàng)目還要考慮兼容IE8以下或者奇奇怪怪瀏覽器的話旭旭,了解一下這個(gè)問(wèn)題也未嘗不可谎脯,至少遇到問(wèn)題知道怎么找解決方法。



七.更多討論



八.參考文獻(xiàn)

參考一:張?chǎng)涡?鑫空間-鑫生活http://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove-%E5%8E%BB%E9%99%A4%E9%97%B4%E8%B7%9D/

參考二:inline-block元素間間隙產(chǎn)生及去除詳解http://demo.doyoe.com/css/inline-block-space/

參考三:CSS Flexible Box Layout Module Level 1https://drafts.csswg.org/css-flexbox/

參考四:使用CSS彈性盒子https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes

參考五:有哪些好方法能處理 display: inline-block 元素之間出現(xiàn)的空格持寄?https://www.zhihu.com/question/21468450

參考六:如何裁剪 CSS/JS 文件(使用 UglifyJS 和 UglifyCSS)http://wiki.jikexueyuan.com/project/symfony-cookbook/minify-cssjs.html

參考七:代碼壓縮UglifyJS ——解決了display:inline-block之間留白問(wèn)題http://www.reibang.com/p/ece740688a01




PPT連接:

PPT?

如果這篇文章對(duì)你有幫助源梭,并且使你對(duì)修真院免費(fèi)在線學(xué)習(xí)感興趣,可以通過(guò)我的鏈接注冊(cè)成員會(huì)稍味,這會(huì)使我得到學(xué)分(兌換學(xué)時(shí))延長(zhǎng)學(xué)習(xí)時(shí)間:

邀請(qǐng)鏈接:http://www.jnshu.com/login/1/13374512

邀請(qǐng)碼:13374512

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末废麻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子模庐,更是在濱河造成了極大的恐慌烛愧,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掂碱,死亡現(xiàn)場(chǎng)離奇詭異怜姿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)顶吮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)社牲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悴了,你說(shuō)我怎么就攤上這事搏恤。” “怎么了湃交?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,995評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵熟空,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我搞莺,道長(zhǎng)息罗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,223評(píng)論 1 292
  • 正文 為了忘掉前任才沧,我火速辦了婚禮迈喉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘温圆。我一直安慰自己挨摸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布岁歉。 她就那樣靜靜地躺著得运,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熔掺,一...
    開(kāi)封第一講書(shū)人閱讀 51,208評(píng)論 1 299
  • 那天饱搏,我揣著相機(jī)與錄音,去河邊找鬼置逻。 笑死推沸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诽偷。 我是一名探鬼主播坤学,決...
    沈念sama閱讀 40,091評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼报慕!你這毒婦竟也來(lái)了深浮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,929評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤眠冈,失蹤者是張志新(化名)和其女友劉穎飞苇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蜗顽,經(jīng)...
    沈念sama閱讀 45,346評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡布卡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雇盖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忿等。...
    茶點(diǎn)故事閱讀 39,739評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崔挖,靈堂內(nèi)的尸體忽然破棺而出贸街,到底是詐尸還是另有隱情,我是刑警寧澤狸相,帶...
    沈念sama閱讀 35,437評(píng)論 5 344
  • 正文 年R本政府宣布薛匪,位于F島的核電站,受9級(jí)特大地震影響脓鹃,放射性物質(zhì)發(fā)生泄漏逸尖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評(píng)論 3 326
  • 文/蒙蒙 一瘸右、第九天 我趴在偏房一處隱蔽的房頂上張望娇跟。 院中可真熱鬧,春花似錦太颤、人聲如沸逞频。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,677評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春瓦堵,著一層夾襖步出監(jiān)牢的瞬間基协,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,833評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工菇用, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澜驮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,760評(píng)論 2 369
  • 正文 我出身青樓惋鸥,卻偏偏與公主長(zhǎng)得像杂穷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卦绣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容