源于生活

标题: CSS中圖片竖直居中对齐 [打印本页]

作者: vingoo    时间: 2015-4-17 01:15
标题: CSS中圖片竖直居中对齐
  1. div {
  2. *float:left;
  3. width:300px;
  4. height:300px;

  5. overflow:hidden;
  6. position:relative;
  7. display:table-cell;
  8. text-align:center;
  9. vertical-align:middle;
  10. margin-left:20px;
  11. }
  12. div p {
  13. position:static;
  14. +position:absolute;
  15. top:50%
  16. }
  17. img {
  18. position:static;
  19. +position:relative;
  20. top:-50%;left:-50%;
  21. }
复制代码



作者: vingoo    时间: 2015-4-17 01:38
  1. <style>
  2.      .box {
  3.      /*非IE的主流浏览器识别的垂直居中的方法*/
  4.      display: table-cell;
  5.      vertical-align:middle;

  6.      /*设置水平居中*/
  7.      text-align:center;

  8.      /* 针对IE的Hack */
  9.      *display: block;
  10.      *font-size:175px;/*约为高度的0.873,200*0.873 约为175*/
  11.      *font-family:Arial;/*防止非utf-8引起的hack失效问题,如gbk编码*/

  12.      width:200px;
  13.      height:200px;
  14.      border: 1px solid #eee;
  15.      }
  16.      .box img {
  17.      /*设置图片垂直居中*/
  18.      vertical-align:middle;
  19.      }
  20. </style>
复制代码

作者: vingoo    时间: 2015-4-17 01:39
一、display:table-cell属性简述

display:table-cell属性指让标签元素以表格单元格的形式呈现,类似于td标签。目前IE8+以及其他现代浏览器都是支持此属性
的,但是IE6/7只能对你说sorry了,这一事实也是大大制约了display:table-cell属性在实际项目中的应用。

我们都知道,单元格有一些比较特别的属性,例如元素的垂直居中对齐,关联伸缩等,所以display:table-cell还是有不少潜在的使用价
值的,虽说IE6/7不支持此属性,但是幸运的是,IE6/7一些乱糟糟的属性与渲染,我们可以其他方法实现同样或是类似的效果。

与其他一些display属性类似,table-cell同样会被其他一些CSS属性破坏,例如float,
position:absolute,所以,在使用display:table-cell与float:left或是position:absolute
属性尽量不用同用。设置了display:table-cell的元素对宽度高度敏感,对margin值无反应,响应padding属性,基本上就是活脱
脱的一个td标签元素了。

二、display:table-cell与大小不固定元素的垂直居中

使用display:table-cell让大小不固定元素垂直居中已经是很老的方法了,关于此应用,我已经在“大小不固定的图片、多行文字的水平垂直居中”这篇文章中有过介绍。

方便阅读,这里再次展示下代码:

/*这里的大小是根据高宽上限128像素图片设置的*/
div{display:table-cell; width:1em; height:1em; border:1px solid #beceeb; font-size:144px; text-align:center; vertical-align:middle;}
div img{vertical-align:middle;}




欢迎光临 源于生活 (http://bbs.vingoo.info/) Powered by Discuz! X3.1