[CSS小技巧]兼容各浏览器的未知高度垂直居中

蓝飞 蓝飞 | 时间:2013-12-02, Mon | 13,141 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

如需转载请注明出处:蓝飞技术部落格

当前暂无评论 »