垂直居中是一个历史悠久的大问题,要做到兼容所有浏览器少不了要花点时间,网上也流传了很多解决方案,但没发现比我现在用的方案更完美,至少在我的项目是如此。

项目中要用到垂直居中而碰到兼容性问题的,一般都是以下几种情况:

换行文字垂直居中

图片垂直居中

以上都是在固定宽高的容器里垂直居中,不然的话margin,padding便可实现。

解决垂直居中无非就从几个方面入手

利用行高等于容器高度

模拟表格单元格特性

定位布局

css3的display:box

换行文字垂直居中

结合表格单元格特性和定位来实现

/* 换行文字垂直居中 */

.vc-font1 {

border: 1px solid black;

width: 200px;

height: 200px;

display: table-cell;

vertical-align: middle;

text-align: center;

}

/* 兼容IE6、7 */

*+html .vc-font1 {

height: auto;

min-height: 200px;

}

.vc-font1 .vc-fix {

*position: relative;

*top: 50%;

*left: 50%;

*width: 100%;

}

.vc-font1 .vc-inner {

*position: relative;

*top: -50%;

*left: -50%;

}

换行文字垂直居中,兼容所有浏览器

当文字高度超出容器时,识别table-cell的浏览器容器会自适应,此时容器的height属性相当于min-height,为了达到所有浏览器效果一致,容器的height还要Hack一下。

缺点:增加了多余的标签

利用行内块vertical-align:middle来实现

.vc-font2 {

border: 1px solid black;

width: 200px;

height: 200px;

text-align: center;

overflow: hidden;

}

.vc-font2 .vc-inner {

display: inline-block;

vertical-align: middle;

}

.vc-font2 .vc-fix {

display: inline-block;

width: 0;

height: 100%;

line-height: 100%;

vertical-align: middle;

visibility: hidden;

}

换行文字垂直居中,兼容所有浏览器

vc-inner和vc-fix必须是行内元素,vc-inner加上vc-fix的宽度不能超过容器宽度,行内块换行时会多出空隙(容器font-size: 0可去除,但这里不适用),所以这两个标签不能换行。

缺点:增加了多余的标签(硬伤),标签不能换行且必须是行内元素。

固定宽高图片垂直居中

前面提到的换行文字垂直居中的方法对于固定宽高图片垂直居中也是适用的

利用定位(原理跟方法1类似)

.vc-img1 {

border: 1px solid black;

width: 200px;

height: 200px;

position: relative;

}

.vc-img1 img {

width: 100px;

height: 100px;

position: absolute;

top: 50%;

left: 50%;

margin: -50px 0 0 -50px;

}

既然已经确定了图片的宽高,毫无疑问使用这种方法就没有兼容性的问题出现了

缺点:图片宽高必须固定,以便计算图片margin的负值。

行高等于容器高度

.vc-img2 {

border: 1px solid black;

width: 200px;

height: 200px;

line-height: 200px;

_font-size: 200px;

text-align: center;

}

.vc-img2 img {

width: 100px;

height: 100px;

vertical-align: middle;

}

/*hack for ie7 字体要设置多大,自个慢慢调整*/

*+html .vc-img2 {

font-size: 180px;

}

我以为设置了行高等于容器高度就完事了,依然还是碰到了问题,IE6不买账没效果,IE7也闹别扭,在标签同一行情况下失效。

这里顺便推荐一个很好用的占位图网站,好奇的童鞋猛戳链接吧 :)

缺点:感觉这样写不爽

图片自适应容器宽高垂直居中

这个方法很简单,就是在方法4的基础上改一下图片的宽高改成max-width,max-height,代码如下:

.vc-img3 {

border: 1px solid black;

width: 200px;

height: 200px;

line-height: 200px;

text-align: center;

}

.vc-img3 img {

max-width: 150px;

max-height: 150px;

vertical-align: middle;

}

/*hack for ie7 字体要设置多大,自个慢慢调整*/

*+html .vc-img3 {

font-size: 180px;

}

很明显这是不兼容IE6,要兼容IE6恐怕就要写JS。对此,我只想说,让IE6见鬼去吧!

CSS3的display:box

最后给出一种高端大气上档次的方法。

.vc-css3 {

border: 1px solid black;

width: 200px;

height: 200px;

text-align: center;

display: -webkit-box;

-webkit-box-align: center;

-webkit-box-pack: center;

display: -moz-box;

-moz-box-align: center;

-moz-box-pack: center;

display: -o-box;

-o-box-align: center;

-o-box-pack: center;

display: -ms-box;

-ms-box-align: center;

-ms-box-pack: center;

display: box;

box-align: center;

box-pack: center;

}

.vc-css3 img {

width: 100px;

height: 100px;

}

想居中就居中,爽啊!

很完美有木有?如果IE能支持的话,又是该死的IE...

php excel 垂直居中,完美实现文字图片水平垂直居中相关推荐

  1. 完美实现文字图片水平垂直居中

    2019独角兽企业重金招聘Python工程师标准>>> 大神弄的CSS样式还是保存到自己这里看起来舒心,嘿嘿 垂直居中是一个历史悠久的大问题,要做到兼容所有浏览器少不了要花点时间,网 ...

  2. flex vue 垂直居中居上_图片水平垂直居中对齐的四种做法

    在前端开发制作中,图片垂直居中对齐是很常见的,有些是固定高度,有些没有固定高度,本文分享我用的四种方法,希望对你有所启发. 以下说的做法暂不考虑IE浏览器的兼容性,适用于移动端,对兼容性感兴趣的可以看 ...

  3. 大小不固定的图片、多行文字的水平垂直居中

    想必写css的都知道如何让单行文字在高度固定的容器内垂直居中,但是您知道或者想过让行数不固定的文字在高度固定的容器内垂直居中呢?本文将会告诉你如何实现多行文字的垂直居中显示. 关于图片垂直居中显示,想 ...

  4. CSS图片水平垂直居中的三种方法

    CSS图片水平垂直居中的三种方法 设置行高 使用定位和translate 使用弹性盒子 设置行高 我们知道img元素为行内快元素,所以首先设置图片元素的父元素里文字水平居中,行高与整体高度一致. 其次 ...

  5. vue中动态绑定背景图, 图片水平垂直居中

    vue中动态绑定背景图,并且使宽高不等的图片水平垂直居中 外层父元素固定宽高,让图片垂直居中的方法 <div style="width:200px;height:200px;" ...

  6. html语言div图片垂直居中,图文详解图片水平垂直居中的五种方法

    1.text-align:center实现图片水平居中 text-align一般用于文本的水平居中,也可以用于图片,代码如下: CSS部分: div{ text-align:center; width ...

  7. 【PDFBox】PDFBox操作PDF文档之添加本地图片、添加网络图片、图片宽高自适应、图片水平垂直居中对齐

    这篇文章,主要介绍PDFBox操作PDF文档之添加本地图片.添加网络图片.图片宽高自适应.图片水平垂直居中对齐. 目录 一.PDFBox操作图片 1.1.添加本地图片 (1)案例代码 (2)运行效果 ...

  8. 已知/未知宽高的浮动元素水平居中对齐 和 图片水平垂直居中对齐

    一.已知宽高的浮动元素水平垂直居中对齐 效果: 样式CSS: 1 <style> 2 .parent{ 3 position:relative; 4 border:2px solid #0 ...

  9. css实现文字的水平垂直居中

    文章目录 1.用行高实现 2.用单元格实现 3.用Flex布局实现 1.用行高实现 实现思路: 将行高设置成与盒子高度一样的值,这样就可以把文字移到盒子的垂直中心了. 当高度一样的时候,它们的垂直中心 ...

最新文章

  1. 你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!
  2. matlab 算法设计,计算方法——算法设计及其MATLAB实现
  3. scrapy爬虫框架
  4. 进入法院黑名单之后,买彩票中了500万还能领奖吗?
  5. php m grep event,php-如何杀死与30分钟以上的grep匹配的进程?
  6. 调出sharepoint错误的详细页面
  7. comparator 字符串比较大小_Java中Comparable和Comparator实现对象比较
  8. 创建VPC前,网络规划的4个问题你弄清了吗?
  9. Spring源码追踪3——AOP机制
  10. 网友直呼太贵!华为nova 8系列发布:麒麟985+66W快充
  11. 网络数据校验随笔(1)
  12. 微软发布ASP.NET MVC 1.0正式版
  13. 服务机器人占领智能安防哪些领域?
  14. 手机变慢怎么办?复位、重置可解决
  15. 学生管理系统IPO图_C语言学生信息管理系统演示和说明(文件版)
  16. Python问题解决6:使用jupyter notebook时安装第三方库提示升级pip,pip升级不成功一直报错
  17. 腾讯云COS云存储入门(一)
  18. 电子(自旋、轨道、耦合)磁矩
  19. Excel提取插入的PPT对象
  20. 计算机图形学是研究真实,计算机图形学论文真实感制图技术在图形学中的应用...

热门文章

  1. 【剑指offer】面试题62:圆圈中最后剩下的数字(Java)
  2. Leetcode--80. 删除排序数组中的重复项Ⅱ
  3. php点链接直接现在文件吗,PHP实现点击a标签的href做链接时,直接保存文件(任何类型),而...
  4. python wx模块下choice列表框值怎么更新_wx python
  5. 怎么知道wx.config执行成功没_作为一个减肥40斤,且10年没反弹的普通人,这份瘦身经验分享给你...
  6. python按行读取文件取消空白行_python去掉空白行的多种实现代码
  7. scikit-learn流形学习手写数字可视化
  8. 好的PPT——准备工作
  9. 李航《统计学习方法》-----朴素贝叶斯
  10. Hive小文件问题:如何产生、造成影响、解放办法