前端实现图标和文字对齐有什么解决方法?我的“绝对对齐”的意思是不管是安卓设备和ios设备看着都是对齐的,最好也能实现pc上的对齐。
demo:https://jsfiddle.net/nzfbzxw6/
虽然我通过设置
vertical-align: -3%;
实现的对齐(在chrome上看着好好的),如果我要在手机设备上安卓,就要是另一个数值。
ios可能又要设个数值(而且不同的苹果机型也不一样)。
对这种问题有什么更好的解决方法吗?
-------------------------- 一个调皮的分割线 ----------------------------------------
各位前辈的方法我都试了一下,发现在安卓手机上都不好使,图片居中是没有问题的,但是文字(尤其是小于12px下的)却无法居中,这可能是安卓手机bug吧...
(第一个box盒子,第二个display:inline-block,第三个background center)
行動裝置(安卓裝置、ios裝置)圖示文字垂直居中對齊的最佳常用解決方案是採用彈性盒子佈局,可以快速有效實現子元素未知高度絕對垂直居中對齊。 PC端考慮到相容性的問題,一般不建議使用彈性盒子,依舊只能採用傳統方式(vertical-align: middle;或position定位)實現圖示文字對齊。
我一般使用的方法:
(1)使用display:table,沒有什麼相容性問題,個人覺得還是比較好用的。
隨意改變close-btn的高度,也能夠居中。
(2)絕對定位
也可以實現絕對的居中對齊。
其實不管是
line-height
還是用position
去定位,不管你display
用的什麼,不同機型的顯示效果都會不一樣。遇到這種ui,我的做法是把圖片寫在
::before
裡,用margin
去定位,這樣不管右側的文案是否絕對的垂直居中,但至少圖是相對文案去定位的,是和文案對齊的。說下我自己常用的兩種辦法(我也一直沒什麼太好的辦法):
第一種:
這種方法是直接把圖片設定為背景。 。然後背景居中。 。
第二種:
這種辦法比較粗暴。 。直接把圖片絕對定位,然後居中
不知道有沒有更好的辦法了。 。
https://jsfiddle.net/lincenyi...
規定好字號,及圖片大小,用相對定位 或 作為背景圖片,下面是相對定位:
*{padding:0;margin:0;}
.close-btn{display:table; background:red;color:#fff;height:45px;line-height:45px ;width:120px;border-radius:5px;}
.close-btn >p{display: table-cell;vertical-align: middle;width: 40%; padding: 0 4px; }
.img-responsive{text-align: right; }
.img-responsive img{vertical-align: middle;width:18px;height:auto;}
.close-des{text- align: left}
以上是針對樓主的demo的css調整,佈局方面:
關閉
給關閉多加一個p標籤,這樣可以達到樓主想要的結果,不管外面怎變變,圖片和文字都是對齊的。ps:如果要做兩個元素絕對對齊,可以優先考慮display:table;(父級) display: table-cell;(子級),這兩個真可以算是最佳搭配,而且屢試不爽。 vertical-align: middle;只在display:inline;(行內元素起作用)
直接上flex佈局,用多了你會發現傳統的寫法沒有一個能比得上彈性盒子來得爽。
除了上面說的各種方法外,我覺得最方便的還是乾脆用個 字符圖標 代替那個圖片嘛。方便的很!
雷雷