標題欄中小圖標和文字垂直居中的解決辦法


我們差不多都遇到過這種情況 就是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都沒有問題,如果之后有問題再說。

這個方法呢 就是代碼簡潔,而且所有的元素都在文檔流里面 沒有破壞掉原來的文檔流。所以是我覺得很好的一個方法。

 

以上三種方法呢 它的原理都非常的簡單。但太晚了 明天有空再補充

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM