標題欄中小圖標和文字垂直居中的解決辦法
阿新 • • 發佈:2017-08-07
9.png 可能 nbsp code 是我 ffffff 居中 margin font
我們差不多都遇到過這種情況 就是top欄裏經常會有圖標和文字不對齊的狀態 如下圖所示:
結構是
<div class="parent"> <i class="icon"></i> <span>中國</span> </div>
這裏時候的css是
.parent{ width: 100%; height: 30px; background: #000000; } .icon{ display:inline-block; width: 14px; height: 30px; background: url(img/flag.jpg) no-repeat center; margin-left: 20px; } span{ font-size: 12px; color: #ffffff; }
因為這樣看起來是文字沒有垂直居中,我們一般會將行高與包含塊高度設為一致,來實現文字的垂直居中。
所以我們會給span裏設置line-height.
span{ font-size: 12px; color: #ffffff; line-height: 30px; }
但結果並沒有用,效果依然如上圖所示。
解決的辦法我粗劣的總結了三種。
第一種是浮動法,將文字和圖片所在的塊全部浮動。
.parent{ width: 100%; height: 30px; background: #000000; color: #FF0000; clear: both; } .icon{ display:inline-block; width: 14px; height: 30px; background: url(img/flag.jpg) no-repeat center; margin-left: 20px; float: left; } span{ font-size: 12px; color: #ffffff; line-height: 30px; float: left; }
效果如下:
可以看出來基本上是垂直居中了。兼容性 只測了ie8和Chrome,如果有什麽不兼容的以後再加上。缺點就是要記得給父元素清楚浮動。
第二種方法 是絕對定位法:
css樣式表如下
.parent{ width: 100%; height: 30px; background: #000000; color: #FF0000; position: relative; } .icon{ display:inline-block; width: 14px; height: 30px; background: url(img/flag.jpg) no-repeat center; margin-left: 20px; } span{ font-size: 12px; color: #ffffff; line-height:30px; position: absolute; }
效果圖如上。
這個方法的關鍵點就是只要將文字絕對定位就可以了。兼容性在ie8和chrome都沒毛病。要記得將父元素設為相對定位。
以上兩個方法有一點很關鍵 就是一定要寫上line-height:30px; 如果不寫的話 文字會頂到最上面 如下圖所示
第三種方法略有不同 vertical-align法
這個方法的css更為簡潔
.parent{ width: 100%; height: 30px; background: #000000; color: #FF0000; } .icon{ display:inline-block; width: 14px; height: 30px; background: url(img/flag.jpg) no-repeat center; margin-left: 20px; vertical-align: middle; } span{ font-size: 12px; color: #ffffff; }
效果圖如下,可以看出是很完美的垂直居中。
這個方法呢 我是在圖片裏面加了一句 vertical-align: middle;就可以了
網上說可能會出現一定兼容性問題,但我測出來ie7,ie8 chrome都沒有問題,如果之後有問題再說。
這個方法呢 就是代碼簡潔,而且所有的元素都在文檔流裏面 沒有破壞掉原來的文檔流。所以是我覺得很好的一個方法。
以上三種方法呢 它的原理都非常的簡單。但太晚了 明天有空再補充
標題欄中小圖標和文字垂直居中的解決辦法