translate(-50%, - 50%)和动画之间的兼容性

时间:2016-08-05 10:48:34

标签: css css3 animation

拥有以下css:

.screen {
    position: fixed;
    width: 100%;
    height: 100%;
}

.card {
    width: 200px; background: #ccc;
    position: relative;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

@keyframes kf_anim {
    0% {
        transform: rotateY(315deg);

    }

    100% {
        transform: rotateY(360deg);
    }
}

.card_anim {
    animation: kf_anim 0.5s forwards;
}

如果我这样做

<div class="screen">
    <div class="card">content</div>
</div>

我得到一个水平和垂直居中的div,这就是我想要的。但是如果我添加动画

<div class="screen">
    <div class="card card_anim">content</div>
</div>

执行动画但div不再居中,即翻译(-50%, - 50%)被覆盖。

我尝试在关键帧中的translate(-50%, -50%)旁边添加rotateY,但动画无效。

我怎么能解决这个问题,假设我不知道宽度和高度?

JSFiddle:https://jsfiddle.net/n5pma29m/

2 个答案:

答案 0 :(得分:2)

你必须使用如下所示的css

 @keyframes kf_anim {
        0% {
            transform: translate(-50%, -50%) rotateY(315deg);

        }

        100% {
            transform:translate(-50%, -50%) rotateY(360deg);
        }
    }

更新了小提琴here

答案 1 :(得分:0)

CSS属性不是“附加” - 你覆盖动画中的前一个变换值。

您还需要在关键帧中指定翻译部分:

@keyframes kf_anim {
    0% {
        transform: translate(-50%, -50%) rotateY(315deg);

    }

    100% {
        transform: translate(-50%, -50%) rotateY(360deg);
    }
}