实现任意图片垂直居中的三种方法

开发 前端
在网站开发过程中,可能会有希望图片垂直居中的情况,而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战。

在网站开发过程中,可能会有希望图片垂直居中的情况,而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战。我总结了一下,曾经使用过的几种方法来使图片垂直居中,除了***种方法只限于标准浏览器外,另外两种方法的兼容性还不错。

方法一:

将外部容器的显示模式设置成display:table,这个设置的意思不用多说了吧… img标签外部再嵌套一个span标签,并设置span的显示模式为display:table-cell,这样span内部的内容就相当于表格,可以很方便的使用vertical-align属性来对齐其中的内容了。

 

 

代码如下:

  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  4.     <title>方法1 - 未知高度的图片垂直居中 - www.cleanthem.com</title>  
  5. <style type="text/css">  
  6. body {  
  7.     height:100%;  
  8. }  
  9. #box{  
  10.     width:500px;height:400px;  
  11.     display:table;  
  12.     text-align:center;  
  13.     border:1px solid #d3d3d3;background:#fff;  
  14. }  
  15. #box span{  
  16.     display:table-cell;  
  17.     vertical-align:middle;  
  18. }  
  19. #box img{  
  20.     border:1px solid #ccc;  
  21. }  
  22. </style>  
  23. <!--[if lte IE 7]>  
  24. <style type="text/css">?  
  25. #box{  
  26.     position:relative;  
  27.     overflow:hidden;  
  28. }  
  29. #box span{  
  30.     position:absolute;  
  31.     left:50%;top:50%;  
  32. }  
  33. #box img{  
  34.     position:relative;  
  35.     left:-50%;top:-50%;  
  36. }  
  37. </style>  
  38. <![endif]-->  
  39. </head>  
  40. <body>  
  41. <div id="box">  
  42.     <span><img src="images/demo_zl.png" alt="" /></span>  
  43. </div>  
  44. </body>  
  45. </html> 

演示地址

#p#

方法二:

标准浏览器的情况还是和上面一样,不同的是针对IE6/IE7利用在img标签的前面插入一对空标签的办法。

 

代码如下:

  1. <html xmlns="http://www.w3.org/1999/xhtml"> 
  2. <head> 
  3.     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  4.     <title>方法2 - 未知高度的图片垂直居中 - www.cleanthem.com</title> 
  5.  
  6. <style type="text/css"> 
  7. body {  
  8.     height:100%;  
  9. }  
  10. #box{  
  11. width:500px;height:400px;  
  12. display:table-cell;  
  13. text-align:center;  
  14. vertical-align:middle;  
  15. border:1px solid #d3d3d3;background:#fff;  
  16. }  
  17. #box img{  
  18. border:1px solid #ccc;  
  19. }  
  20. </style> 
  21. <!--[if IE]> 
  22. <style type="text/css">?  
  23. #box i {  
  24.     display:inline-block;  
  25.     height:100%;  
  26.     vertical-align:middle  
  27.     }  
  28. #box img {  
  29.     vertical-align:middle  
  30.     }  
  31. </style> 
  32. <![endif]--> 
  33. </head> 
  34. <body> 
  35. <div id="box"> 
  36.     <i></i><img src="images/demo_zl.png" alt="" /> 
  37. </div> 
  38.  
  39. </body> 
  40. </html> 

演示地址

#p#

方法三:

在img标签外包裹一个p标签,标准浏览器利用p标签的伪类属性:before来实现居中,另外,对于IE6/IE7使用了CSS表达式来实现兼容。

代码如下:

  1. <html xmlns="http://www.w3.org/1999/xhtml"> 
  2. <head> 
  3.     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  4.     <title>方法3 - 未知高度的图片垂直居中 - www.cleanthem.com</title> 
  5.  
  6. <style type="text/css"> 
  7. body {  
  8.     height:100%;  
  9. }  
  10. #box{  
  11.     width:500px;height:400px;  
  12.     text-align:center;  
  13.     border:1px solid #d3d3d3;background:#fff;  
  14. }  
  15. #box p{  
  16.     width:500px;height:400px;  
  17.     line-height:400px;  /* 行高等于高度 */  
  18. }  
  19.  
  20. /* 兼容标准浏览器 */  
  21. #box p:before{  
  22.     content:".";  /* 具体的值与垂直居中无关,尽可能的节省字符 */  
  23.     margin-left:-5px; font-size:10px;  /* 修复居中的小BUG */  
  24.     visibility:hidden;  /*设置成隐藏元素*/  
  25. }  
  26.  
  27. #box p img{  
  28.     *margin-top:expression((400 - this.height )/2);  /* CSS表达式用来兼容IE6/IE7 */  
  29.     vertical-align:middle;  
  30.     border:1px solid #ccc;  
  31. }  
  32. </style> 
  33. </head> 
  34. <body> 
  35. <div id="box"> 
  36.     <p><img src="images/demo_zl.png" alt="" /></p> 
  37. </div> 
  38. </body> 
  39. </html> 

演示地址

 

原文链接:http://www.cnblogs.com/cnliu/archive/2012/06/20/image-center.html

责任编辑:张伟 来源: CNL的博客
相关推荐

2010-08-24 14:47:48

CSS居中

2010-08-27 10:30:16

CSS垂直居中

2021-07-13 12:31:27

IT组织改进首席技术官

2009-07-08 12:56:32

编写Servlet

2010-09-10 08:54:52

DIV居中

2013-01-04 15:47:54

Android开发平铺UI设计

2020-01-13 13:20:01

开源技术 软件

2010-08-26 16:19:41

DIV圆角

2009-12-11 18:49:39

预算编制博科资讯

2010-09-14 15:10:49

CSS注释

2023-08-14 17:58:13

RequestHTTP请求

2011-04-18 15:32:45

游戏测试测试方法软件测试

2022-07-13 16:06:16

Python参数代码

2015-12-11 09:24:38

加密数据Linux

2015-12-30 09:58:49

Docker Comp容器

2022-09-13 10:58:55

物联网IoT

2016-06-12 09:32:43

R语言Hadoop数据处理

2021-09-10 18:09:42

SQL注入漏洞网络攻击

2016-09-09 13:07:56

CentOSJDKLinux

2009-07-23 15:17:54

JDBC连接Acces
点赞
收藏

51CTO技术栈公众号