标题栏中小图标和文字垂直居中的解决办法

咱们差很少都遇到过这种状况 就是top栏里常常会有图标和文字不对齐的状态 以下图所示:css

结构是chrome

<div class="parent">
     <i class="icon"></i>
     <span>中国</span>
</div>    

 

 

这里时候的css是url

.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;                    
}

 

由于这样看起来是文字没有垂直居中,咱们通常会将行高与包含块高度设为一致,来实现文字的垂直居中。spa

因此咱们会给span里设置line-height.code

span{    
    font-size: 12px;
    color: #ffffff;    
    line-height: 30px;                
}

但结果并无用,效果依然如上图所示。blog

解决的办法我粗劣的总结了三种。图片

第一种是浮动法,将文字和图片所在的块所有浮动。文档

.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;            
}

效果以下:it

能够看出来基本上是垂直居中了。兼容性 只测了ie8和Chrome,若是有什么不兼容的之后再加上。缺点就是要记得给父元素清楚浮动。io

第二种方法 是绝对定位法:

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都没有问题,若是以后有问题再说。

这个方法呢 就是代码简洁,并且全部的元素都在文档流里面 没有破坏掉原来的文档流。因此是我以为很好的一个方法。

 

以上三种方法呢 它的原理都很是的简单。但太晚了 明天有空再补充

相关文章
相关标签/搜索