未知高度的图片垂直居中(2)

作者:雨夜带刀 来源:雨夜带刀's Blog 时间:2010-12-17 12:36:00 

方法二 (XHTML 1.0 transitional):

方法二和方法一的实现的原理大同小异,结构也是相同的,方法一用的是条件注释,方法二就用的CSS Hack。

CSS样式部分:


<style type="text/css">
#box{
width:500px;height:400px;
overflow:hidden;
position:relative;
display:table-cell;
text-align:center;
vertical-align:middle;
border:1px solid #d3d3d3;background:#fff;
}
#box span{
position:static;
*position:absolute; /*针对IE6/7的Hack*/
top:50%; /*针对IE6/7的Hack*/
}
#box img {
position:static;
*position:relative; /*针对IE6/7的Hack*/
top:-50%;left:-50%; /*针对IE6/7的Hack*/
border:1px solid #ccc;
}
</style>


该方法有个弊端,在标准浏览器下由于外部容器#box的显示模式为display:table-cell,所以导致#box无法使用margin属性,并且在IE8下设置边框也无效。

方法三 (XHTML 1.0 strict):

标准浏览器还是将外部容器#box的显示模式设置为display:table-cell,IE6/IE7是利用在img标签的前面插入一对空标签的办法。

HTML结构部分:


<div id="box"><i></i><img src="images/demo.jpg" alt=""></div>


CSS样式部分:


<style type="text/css">
#box{
width:500px;height:400px;
display:table-cell;
text-align:center;
vertical-align:middle;
border:1px solid #d3d3d3;background:#fff;
}
#box img{
border:1px solid #ccc;
}
</style>
<!--[if IE]>
<style type="text/css">
#box i {
    display:inline-block;
    height:100%;
    vertical-align:middle
    }
#box img {
    vertical-align:middle
    }
</style>
<![endif]-->


方法三也同样适用XHTML 1.0 transitional。以上方法都是收集于蓝色理想,暂时只对这3个方法比较满意,兼容性方面不错,使用起来的限制也比较小,还有些方法我也都一一测试过,效果都不理想,在各浏览器中的差异比较大。另外司徒正美这里也收集了一些方法。

思考:很多方法都是依赖于将外部容器的显示模式设置成table才能实现垂直居中,也就是div来模拟table,如果CSS有一个属性来实现这种效果那该多好。如果你也有好的方法,欢迎你来分享。

原文:http://stylechen.com/img-middle.html

标签:图片,居中
0
投稿

猜你喜欢

  • 运行SQL Server的计算机间移动数据库

    2009-01-20 13:07:00
  • asp 在线备份与恢复sqlserver数据库的代码

    2011-03-06 11:14:00
  • 最简洁的SQL多重查询的解决方案

    2005-09-12 16:31:00
  • 开发iPhone版校友录

    2009-08-31 16:29:00
  • Javascript的匿名函数

    2008-05-07 13:33:00
  • 如何编写一个创建FTP站点的函数?

    2009-11-07 18:51:00
  • Firefox 3.6新功能预览

    2009-12-01 14:23:00
  • ASP不允许同一个用户同时登陆两次

    2008-06-03 13:45:00
  • 交互设计实用指南系列(6) –标签明晰、有效

    2010-01-21 12:39:00
  • 数据库手边系列:SQL Server数据表信息

    2009-05-24 18:26:00
  • oracle用什么SQL语句判断表存不存在

    2010-07-23 13:23:00
  • oracle join on 数据过滤问题

    2009-07-14 21:17:00
  • 实例解析:MySQL 实例管理器识别的命令

    2009-02-23 17:33:00
  • ASP Framework_1_简介

    2009-10-12 11:35:00
  • ASP的错误代码都有哪些?

    2009-10-28 18:15:00
  • 如何确定Oracle数据库表重复的记录

    2010-07-26 13:23:00
  • ASP实例:处理多关键词查询实例代码

    2008-11-24 12:56:00
  • CSS+asp仿迅雷人气指数

    2009-08-03 14:11:00
  • 很无聊的一个找碴游戏

    2008-07-02 13:10:00
  • IE9报“DOM Exception: INVALID_CHARACTER_ERR (5)”错误的原因及解决办法

    2011-09-01 19:11:07
  • asp之家 网络编程 m.aspxhome.com