前言
可能很多人一開始學(xué)前端時都會覺得CSS簡單,沒錯,CSS沒有語言邏輯,入門確實(shí)很簡單,可要是想深入挖掘的話……嘿嘿,水可深著呢!
就比如說今天要跟大家分享的這個,表面上看可能覺得也沒多大問題,但是就是這個不太起眼的“小玩意”,困擾了我很久……下面話不多說了,來一起看看詳細(xì)的介紹吧。
接下來我們步入正題~~
比如說,現(xiàn)在我要做一個簡單的刪除按鈕,只由一個icon和“刪除”兩個字組成,你會如何布局,給你30秒時間考慮。
好,先亮出HTML代碼如下:
<div class="del"><span class="icon"></span><span>刪除</span></div>
很簡單,就是一個class為del的div元素下有兩個span標(biāo)簽,當(dāng)然icon你也可以直接用偽元素代替(還不知道偽元素的面壁思過去...)。
接下來你可能會這么寫CSS:
.del{ font-size: 18px;} .del .icon{ display: inline-block; width: 16px; height: 24px; margin-right: 5px; background: url("imgs/delete.png") no-repeat center; background-size: 100%;}
然后它就變成這個樣子了:
咦?好像跟想象的不太一樣啊!為什么圖片和文字垂直方向上不能對齊呢?Why?
這是因為圖片和文字在行內(nèi)垂直方向默認(rèn)是以基線(baseline)對齊的,圖片基線在圖片底部,而文字基線卻在文字中點(diǎn)偏下的位置,所以才會顯示成上圖的樣子。那么這個問題該如何解決呢?
很簡單,我們只需給圖片和文字分別加上 vertical-align: middle即可:
.del .icon{ display: inline-block; width: 18px; height: 24px; margin-right: 5px; vertical-align: middle; background: url("imgs/delete.png") no-repeat center; background-size: 100%;} .del span{ vertical-align: middle;}
這樣的話,圖片和文字就以其中心線對齊了:
說到這里,其實(shí)本文基本已經(jīng)結(jié)束了,但是經(jīng)過本人親測發(fā)現(xiàn),在移動端卻會發(fā)現(xiàn)圖片和文字又會出現(xiàn)不對齊的情況了,但這只是部分瀏覽器出現(xiàn)的兼容性問題,解決方法也是有的,就是在設(shè)置文字字體大小和icon大小時盡量設(shè)置為5的整數(shù)倍,并盡量讓icon高度與字體大小相同。那么本例的代碼將寫成下面這樣:
.del{ font-size: 20px;} .del .icon{ display: inline-block; width: 20px; height: 25px; margin-right: 5px; vertical-align: middle; background: url("imgs/delete.png") no-repeat center; background-size: 100%;} .del span{ vertical-align: middle;}
這樣基本也沒有什么問題了……
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對的支持。