[CSS小技巧]兼容各浏览器的未知高度垂直居中
杰拉斯 | 时间:2013-12-02, Mon | 21,905 views前端开发
/* *@ Name: 未知高度垂直居中组件 *@ Author: 一丝 *@ Update: 2013-10-13 17:08:36 *@ Usage: 支持图片,单行或多行文字,以及图文混排 */ /* 去除 inline-block 的空隙 */ .center-box { font-size: 0; *word-spacing: -1px; /* IE6、7 */ height: 100%; /* 继承父级高度 */ } /* 修复 Safari 5- inline-block 的空隙 */ @media (-webkit-min-device-pixel-ratio:0) { .center-box { letter-spacing: -5px; } } /* 使用空标签生成一个高度100%的参照元素 */ .center-box .center-hack { display: inline-block; *display: inline; *zoom: 1; font-size: 0; width: 0; height: 100%; vertical-align: middle; } .center-box .center-body { letter-spacing: normal; word-spacing: normal; display: inline-block; *display: inline; *zoom: 1; font-size: 12px; vertical-align: middle; /* 保证文字垂直居中 */ padding: 0 !important; /* 防止设置边距导致居中失效 */ margin: 0 !important; width: 100%; /* 保证连续字符也能居中 */ white-space: normal; /* 保证连续字符换行 */ word-wrap: break-word; } .center-box .center-img { display: inline-block; *display: inline; *zoom: 1; width: 100%; text-align: center; /* 图片默认水平居中 */ vertical-align: middle; padding: 0 !important; /* 防止设置边距导致居中失效 */ margin: 0 !important; } .center-box img { vertical-align: middle; /* 去除现代浏览器 img 底部空隙 */ }
原理是利用CSS中的vertical-align属性将.center-body的对齐方式设置为行内垂直居中,再利用一个宽度为0,高度为100%的元素.center-hack同样在行内垂直居中,而.center-body相对于.center-hack垂直居中对齐,那么也就相对于父元素垂直居中对齐了。
来自一丝大大的GitHub。