CSS Hack-处理“未知图片垂直居中”的CSS样式

CSS Hack-分享以及推荐一种处理“未知图片垂直居中”的CSS样式

在介绍这种新的hack之前,先回顾一下我曾经用过的一个css hack,目的当然同样是对未知高度的图片进行垂直居中处理。

方法一,用一个庸余标签协助实现垂直居中

<div class="box-c"><img src="images/pic170x133.gif" alt="" /><span class="box-c-fix"></span ></div>

 

代码
#imgDemo1 .box-c{height:300px;text-align:center;}
#imgDemo1 .box-c img
{display:inline;vertical-align:middle;}
#imgDemo1 .box-c-fix
{display:-moz-inline-box!important;display:inline-block;vertical-align:middle;height:100%;}

 

 

这种方式需要增加一个庸余的空标签span.box-c-fix,另外试试将span换成块元素div,是不是居中实效?没办法ie就是这么傻叉。。。

友情提示:img和span.box-c-fix之间最好不要有文字或者空格,否则ie下可能出现居中失效。

方法二,新的hack,推荐大家测试使用

 

<div class="box-c"><img src="images/pic170x133.gif"alt="" /></div>

 

代码
/* 垂直居中-*font-size需根据具体高度算 */

.box-c
{

/* 非ie的主流浏览器识别的垂直居中 */

display
: table-cell;

vertical-align
:middle;

/* 设置水平居中 */

text-align
:center;

/* 针对恶心的IE的HACK */

*display
: block;

*font-size
: 148.41px; /* 神的hack,人类目前无法解释。约为高度的0.873~0.877,如170*0.873=148.41 */

*font-family
:Arial; /* 防止非utf-8引起的hack失效问题,如gbk编码 */

/* 高宽 */

width
:170px;

height
:170px;

}

.box-c img
{

/* 设置图片垂直居中 */

vertical-align
:middle;

/* 注:block会破坏居中,另外请防止别的样式覆盖 */

display
:inline-block;/* inline也行 */

}

 

 

这个样式传说来源于淘宝UI团队,经网上不少用户精简优化后得来。相对于之前流行的用一个庸余标签实现居中的方式有所改进。

另外需要注意的是,页面的编码会影响这个垂直居中的hack。建议页面和css文件采用相同的编码方式,例如都用utf-8编码。否则可能会出现居中失效。

 

经实际测试,主流浏览器和非主流IE均支持良好。 

 

测试浏览器:

Ie6~ie8

Safari5

Opera 11

Chrome 7

Firefox 3.6

搜狗2.0

 

示例demo在哪里?

未知高度图片垂直居中的方法除了上面两种,我所熟悉的还有第三种,有兴趣的可以看下我整理的demo,

 

http://www.vivasky.com/labs/jqfocus/css_verticalAlign.html

 

 

posted @ 2010-12-10 14:14  Mamboer  阅读(500)  评论(2编辑  收藏  举报