translateY(-50%)模糊子元素

时间:2015-05-22 13:22:44

标签: html css3 alignment css-transforms

出于某种原因,我的垂直对齐代码模糊了Chrome和Safari中的一些但不是所有子元素。

导致它的原因是translateY(-50%),如果我删除它,那么模糊性就会消失,但垂直居中效果会丢失。

/* @group Center all the things */
.center-wrapper {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}
.center-wrapper .center {
    position: relative;
    overflow: hidden;
    top: 50%;
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    transform: translateY(-50%);
    /* This fixes the blurred buttons but breaks centering

       -webkit-backface-visibility: hidden;
               backface-visibility: hidden;

       transform: translateZ(0);*/
}
/* @end */

经过尝试和测试的方法,例如下面的工作,但它们打破了垂直居中:

-webkit-backface-visibility: hidden;
        backface-visibility: hidden;
transform: translateZ(0);

3 个答案:

答案 0 :(得分:0)

解决这个模糊问题的唯一方法是,我可以看到更改垂直对齐方法并改为使用display: table。以下是我的表现方式:

1)保持HTML标记相同

<div class="center-wrapper">
   <div class="center">
       <p>Centered content here</p>
   </div>
</div>

2)将CSS更改为以下内容:

/* @group Center all the things */

.center-wrapper {
    min-height: 100%;
    padding: 0;
    display: table;
    width: 100%;
}

    .center-wrapper .center {
        display: table-cell;
        vertical-align: middle;

    }

 /* @end */

答案 1 :(得分:0)

尝试在中间放置按钮时面临同样的问题,但按钮出现在父元素的悬停上,每次文本内部都是随机剪切的。

解决方案是:

.positioned-button {
   transform: translateY(-50%) scale(1);
   filter: blur(0);
   line-height: 1;
}

什么都不打破,修复Chrome:)

答案 2 :(得分:0)

您可以在此处查看运行中的显示表。

.center-wrapper {
    min-height: 200px;
    padding: 0;
    display: table;
    width: 100%;
    background: black;
}

.center-wrapper .center {
    display: table-cell;
    vertical-align: middle;
    color: white;
}

.center-wrapper .center div {
    height: 40px;
    background: red;
    width: 50%;
    margin: 0 auto;
}
<div class="center-wrapper">
   <div class="center">
       <div>Centered content here</div>
   </div>
</div>