關(guān)于圖片與文字垂直方向不對齊問題的解決方法
前言
可能很多人一開始學(xué)前端時都會覺得CSS簡單,沒錯,CSS沒有語言邏輯,入門確實很簡單,可要是想深入挖掘的話……嘿嘿,水可深著呢!
就比如說今天要跟大家分享的這個,表面上看可能覺得也沒多大問題,但是就是這個不太起眼的“小玩意”,困擾了我很久……下面話不多說了,來一起看看詳細(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;}
這樣的話,圖片和文字就以其中心線對齊了:

說到這里,其實本文基本已經(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í)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
- 本文給大家介紹的是如何讓同一行的圖片和文字巧妙的居中對齊的方法,思路非常好,這里分享給大家,希望大家能夠喜歡。2015-03-16
- 當(dāng)文字和圖片出現(xiàn)在同一行或者同一個div里面的時候,在瀏覽器中運(yùn)行出來的顯示效果往往是在不同的行,那么我們怎么才能在css中控制他們在同一行顯示呢2014-06-15
- 在文字旁邊加上一個圖標(biāo),通過css如何解決文字與圖片不能水平居中對齊的問題,下面有個示例,大家可以參考下2014-05-31

