最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442

网页制作实例:图片真正居中的方法

日期:04-19    来源:中国设计秀    作者:cnwebshow.com

文章简介:让图片垂直居中的方法.cT5中国设计秀

 cT5中国设计秀

图片的宽度和高度是未知的,没有一个固定的尺寸,在这个前提下要使图片在一个固定了宽度和高度的容器中垂直居中,想想感觉还是挺麻烦的,由于最近的项目可能会用到这个方案,所以把一些常用的方法都收集整理了一下。cT5中国设计秀

下图是理想中的效果图,外部容器的宽度和高度是固定的,中间的图片宽度和高度未知,但是图片要始终要相对于外部的容器垂直居中。cT5中国设计秀

cT5中国设计秀

但是实际中实现的效果并不是很完美,由于各浏览器的解析都各不相同,所以各浏览器都会有1px-3px的偏差。cT5中国设计秀

方法一 (XHTML 1.0 transitional):cT5中国设计秀

该方法是将外部容器的显示模式设置成display:table,img标签外部再嵌套一个span标签,并设置span的显示模式为display:table-cell,这样就可以很方便的使用vertical-align象表格元素那样对齐了,当然这只是在标准浏览器下,IE6/IE7还得使用定位。cT5中国设计秀

HTML结构部分:cT5中国设计秀

<div id="box">cT5中国设计秀
    <span><img src="images/demo.jpg" alt=""></span>cT5中国设计秀
</div>cT5中国设计秀

cT5中国设计秀

css样式部分:cT5中国设计秀

<style type="text/css">cT5中国设计秀
#box{cT5中国设计秀
width:500px;height:400px;cT5中国设计秀
display:table;cT5中国设计秀
text-align:center;cT5中国设计秀
border:1px solid #d3d3d3;background:#fff;cT5中国设计秀
}cT5中国设计秀
#box span{cT5中国设计秀
display:table-cell;cT5中国设计秀
vertical-align:middle;cT5中国设计秀
}cT5中国设计秀
#box img{cT5中国设计秀
border:1px solid #ccc;cT5中国设计秀
}cT5中国设计秀
</style>cT5中国设计秀
<!--[if lte IE 7]>cT5中国设计秀
<style type="text/css">cT5中国设计秀
#box{cT5中国设计秀
position:relative;cT5中国设计秀
overflow:hidden;cT5中国设计秀
}cT5中国设计秀
#box span{cT5中国设计秀
position:absolute;cT5中国设计秀
left:50%;top:50%;cT5中国设计秀
}cT5中国设计秀
#box img{cT5中国设计秀
position:relative;cT5中国设计秀
left:-50%;top:-50%;cT5中国设计秀
}cT5中国设计秀
</style>cT5中国设计秀
<![endif]-->cT5中国设计秀

cT5中国设计秀

方法二 (XHTML 1.0 transitional):cT5中国设计秀

方法二和方法一的实现的原理大同小异,结构也是相同的,方法一用的是条件注释,方法二就用的css Hack。cT5中国设计秀

css样式部分:cT5中国设计秀

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

cT5中国设计秀

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

方法三 (XHTML 1.0 strict):cT5中国设计秀

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

HTML结构部分:cT5中国设计秀

<div id="box"><i></i><img src="images/demo.jpg" alt=""></div>cT5中国设计秀

cT5中国设计秀

css样式部分:cT5中国设计秀

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

cT5中国设计秀

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

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

原文:http://stylechen.com/img-middle.htmlcT5中国设计秀