高宽不定图片水平垂直居中

图片水平垂直居中的两个常用方法:

1、Table-cell。

  IE8+及标准浏览器利用display:table-cell让容器以表格元素的方式呈现,配合vertical-align和text-align实现内部图片水平垂直居中。

  IE67不支持display:table-cell,可用font-size,值为容器的0.875倍做hack。  


    html,body,p, div { margin: 0; padding: 0; }
.wrap { height: 300px; width: 300px; border: 1px solid #ccc; }
.wrap {
display: table-cell; /* IE8+及标准浏览器识别,让div以表格元素的方式呈现,目的在于配合vertical-align*/
vertical-align: middle; /* IE8+及标准浏览器识别,内容垂直居中 */
text-align: center; /* 内容水平居中 */
*display: block; /* IE67识别,保证父级容器为块元素 */
*font-size: 262px; /* IE67hack,以font-size的方式来实现vertical-align的效果值为父高的0.875倍 */
*font-family: Arail; /* 防止非UTF-8编码造成hack失效 */
}
.wrap img {vertical-align: middle;} /* IE67识别,图片矫正垂直,配合font-size */

    <div class="wrap">
<img src="http://static.vas.pptv.com/vas/g/games/v_20130712105432/images/logo.png" />
</div>

  这个方法的缺点很明显,依赖于table-cell,由于table-cell需要在文档流内才能发挥效用,若父容器(wrap)需要position:absolute或者float,则此方法失效。

2、button嵌套

 
button本身的内容是自动水平垂直居中的,此点上无兼容性问题,让button包含图片,图片不需要任何特殊处理即可水平垂直居中,算是皆大欢喜,记得button要禁用。


    html,body,p, div { margin: 0; padding: 0; }
.wrap button {
height: 300px;
width: 300px;
border: 1px solid #ccc;
background: none;
}

    <div class="wrap">
<button disabled="true">
<img src="http://static.vas.pptv.com/vas/g/games/v_20130712105432/images/logo.png" />
</button>
</div>

  这个方法比第一个方法代码更简洁,兼容性更好,html结构上多了一层标签,如果只是作为CSS呈现,算是比较好的方法。

   但是在IE下,由于image包含在了button当中,用户能触发交互的只有button,不能直接由用户触发绑定在image上的事件,解决的办法,让button去处理image上的句柄。标准浏览器没有这个问题。

  

时间: 2024-12-17 03:42:37

高宽不定图片水平垂直居中的相关文章

不定宽的图片水平垂直居中

如何让不定高和不定宽的图片水平垂直居中在某一个定高定宽的容器中呢,请听我细细到来. 现在有很多浏览器(如chrome,部分ie,firefox,opera等)都支持display:table,display:table-cell,让图片水平垂直居中就很简单了,给外部容器加一个display:table和vertical-align:middle,text-align:center属性,图片给display:table-cell属性,就可以实现水平垂直居中. 当然,并不是所有的浏览器(如ie6,等

图片水平垂直居中

效果仅见:http://runjs.cn/detail/tkid13aj <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style type="text/css"> body{ margin:0; padding:0;} dl,dt,dd,img{ margin:0; paddin

HTML-img图片水平垂直居中。

<style> .box{ width:800px;height:800px;border:1px solid #000; text-align:center;}//水平居中 span{ display:inline-block; height:100%; vertical-align:middle;}//垂直居中 img{ vertical-align:middle;}//垂直居中 </style> </head> <body> <div class

未知宽高的图片水平垂直居中的几种方法

最近在项目中遇到不固定宽高的图片要水平垂直居中的情况,发现垂直居中存在兼容性问题,下面收集了一些方法,可根据需要权衡使用. 1. 背景法(兼容性好,简单,但不利于动态导入的图片) html: <div class="wrap"></div> css: .wrap{ width:300px; height:200px; background: url(../img/test.jpg) center center no-repeat; } 2. 图片外面用个p标签,

等高列布局、水平垂直居中与置顶页脚(转载)

等高列布局 在<八种创建等高列布局>一文中详细介绍了八种创建等高列布局的不同方法.可以说这些方法足以满足你的业务需求,当然其中有一些方法略为繁琐,也有时转得人头晕.在今天这种技术环境之下,如果的业务对IE低版本依赖性不是非常强的情况之下,可以考虑一些新的方法来实现.接下来我与大家一起探讨几种新方法实现等高列布局. Flexbox方式 Flexbox是一个强大而又神奇的CSS3模块,而且到现在,也得到众开浏览器的支持.有了这个模块,可以帮助我们做很多事情,而且较之以前的方案要更简单,唯一蛋疼的是

CSS制作图片水平垂直居中 亲测推荐

空白标签实现图片的垂直居中 这种方法很有意思,也很有独特之处,我的思路也是来自于张鑫旭-鑫空间-鑫生活写的<大小不固定的图片.多行文字的水平垂直居中>一文中的使用空白图片实现垂直对齐.他主要使用了一张宽度为1px高度为100%的透明图片,并设置图片“vertical-align:middle”.后来我想了想,此处能不能不使用图片,直接像上面的实例一样,用一个空格的span标签,只是将其“display:inline”设置为“display:inline-block”.因为这两者的核心原理都是一

图片水平垂直居中于DIV(图片未知宽高)

HTML代码: <div class=”demo”><a href=“#”><img src=“images/01.jpg” /></a></div> css /*For Firefox Chrome*/.demo{border:1px #ddd solid;width:208px;height:148px;overflow:hidden;text-align:center;display:table;float:left;margin:50px

未知宽高图片水平垂直居中在div

<BODY> <div class="box"> <span class="car"></span> <img src="images/01.jpg" title="car" /> </div> </BODY> .box { width: 100%; overflow: hidden; text-align: center; /*font-si

纯css实现文字及图片水平垂直居中

1.图片及文字水平居中只需要加上text-align:center即可: 2.单行文本垂直居中,高度等于行高即可: 3.多行文本及图片垂直居中: 需要在外面嵌套两层,第一层设置固定高度 height,和display:table;第二层加上display:table-cell;vertical-align:middle;即可实现(IE7及以下无效) 4.图片垂直居中的另一种方案,兼容任何浏览器: 在图片外面嵌套一层,设置好高度 display: table-cell;vertical-align