html+css使用空白标签巧妙实现不同尺寸的图片在容器里垂直居中的方法
2016-11-24 19:15
816 查看
实现图片在容器累垂直居中有多种方法,例如计算高度使用margin,透明gif图片+背景定位等等,其中很多方法比较繁琐兼容性也不好,例如用position方法。下面为大家介绍两种比较简洁的方法,一种是利用display:table-cell实现 图片垂直居中,另一种是使用空白标签巧妙实现不同尺寸的图片在容器里垂直居中的方法;第二种方法是我为了解决前一种方法存在的兼容性为题而想出来的,这是在查了一些资料后,受到张鑫旭的博客的启发想到的。
一、先介绍display:table-cell的方法:
话不多说上代码:
display:table-cell用来处理图片非常方便,但是存在ie兼容性问题,因为IE6,IE7根本就不识别display:table-cell!所有我们就不能不去寻找更为方便兼容性更好的方法,下面就为大家介绍这么一种方法。
二、使用空白标签巧妙实现不同尺寸的图片在容器里垂直居中的方法
先简单的说一说原理:将要显示的图片与一个高度为100%,宽度1px的空元素进行vertical-align:middle对齐;
张鑫旭介绍的是一种与透明的gif图片进行vertical-align:middle对齐的方法,但是用img标签时chrome会出现bug,受到启发我尝试使用空标签,经过多次测试,最后发现使用空白标签
也能实现居中效果,且更为简单,不限于img标签。
这里添加的空标签可以为 span 、 a等标签,但需要在样式中转为行内块元素才能起效,用img标签有一些注意事项我已经写在注释里了;
谷歌出现的bug如下图:
加上display-inline后bug解决
经测试第二种方法在各大浏览器中均能实现很好的效果,消耗小,方便快捷,在这里推荐给大家。
一、先介绍display:table-cell的方法:
话不多说上代码:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>table-cell 图片居中</title> <style type="text/css"> .wrap{ float: left; } a{display:table-cell; vertical-align:middle; width:128px; height:150px; border:1px solid #beceeb; text-align: center;} img{ max-width:128px;max-height:150px; } </style> </head> <body> <div class="wrap"> <a href="#" ><img src="images/1.jpg" alt='图片'></a> </div> <div class="wrap"> <a href="#" ><img src="images/2.jpg" alt='图片'></a> </div> </body> </html>
display:table-cell用来处理图片非常方便,但是存在ie兼容性问题,因为IE6,IE7根本就不识别display:table-cell!所有我们就不能不去寻找更为方便兼容性更好的方法,下面就为大家介绍这么一种方法。
二、使用空白标签巧妙实现不同尺寸的图片在容器里垂直居中的方法
先简单的说一说原理:将要显示的图片与一个高度为100%,宽度1px的空元素进行vertical-align:middle对齐;
张鑫旭介绍的是一种与透明的gif图片进行vertical-align:middle对齐的方法,但是用img标签时chrome会出现bug,受到启发我尝试使用空标签,经过多次测试,最后发现使用空白标签
也能实现居中效果,且更为简单,不限于img标签。
这里添加的空标签可以为 span 、 a等标签,但需要在样式中转为行内块元素才能起效,用img标签有一些注意事项我已经写在注释里了;
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>使用空白标签实现图片在容器里垂直居中</title> <style type="text/css"> li{ height:128px; width:150px; padding:13px 0; float:left; margin-right:10px; border:1px solid #beceeb; text-align:center; font-size:0; } li .help_img{ height:100%; width:1px; display: inline-block; /*标签需转换为行内块元素*/ vertical-align:middle; } li .show_img{ vertical-align:middle; } </style> </head> <body> <ul class="zxx_align_box_6 fix"> <li> <img class="show_img" src="images/1.jpg" /> <span class="help_img" /></span> </li> <!--这里如果使用img标签会出现问题,src=""的存在会让chrome出现兼容性问题(出现灰色边框),去img标签中的src=""时会导致在火狐无法垂直居中 如果使用img标签仍需要在样式中加上display:inline-block;才能消除上述影响--> <li> <img class="show_img" src="images/2.jpg" /> <span class="help_img" /></span> </li> </ul> </body> </html>
谷歌出现的bug如下图:
加上display-inline后bug解决
经测试第二种方法在各大浏览器中均能实现很好的效果,消耗小,方便快捷,在这里推荐给大家。
相关文章推荐
- 使用纯CSS实现未知尺寸的图片(但高宽都小于500px)在500px的正方形容器中水平和垂直居中。你有几种方法?
- 使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。
- CSS未知尺寸的图片在容器中垂直居中的方法
- Div垂直居中及容器内图片垂直居中的CSS解决方法
- 使用CSS完美实现垂直居中的方法
- 使用CSS完美实现垂直居中的方法
- 纯CSS实现未知高宽的图片在容器中水平和垂直居中
- CSS实现图片在div a标签中水平垂直居中
- 垂直居中及容器内图片垂直居中的CSS解决方法
- 垂直居中及容器内图片垂直居中的CSS解决方法
- css实现的让图片垂直居中的方法
- css-文字和图片在容器内垂直居中的简单方法
- (转)垂直居中及容器内图片垂直居中的CSS解决方法
- 纯css实现未知尺寸图片在DIV中垂直水平居中(超简单)
- CSS图片垂直居中实现方法详解
- 使用CSS完美实现垂直居中的方法
- CSS图片垂直居中实现方法详解
- CSS实现图片垂直(纵向)居中方法
- Div垂直居中及容器内图片垂直居中的CSS解决方法
- 使用CSS完美实现垂直居中的方法