【问题标题】:CSS transition not correctly workingCSS 过渡无法正常工作
【发布时间】:2014-11-29 08:39:20
【问题描述】:

我有一个奇怪的问题。我有一个带有两个图像的 CSS 翻转动画。

问题在于,在第一次转换时,首先隐藏的图像不能很好地转换,而是在转换结束时立即显示。

但是,在第一次转换后,问题就消失了,之后就可以正常工作了。

虽然应用程序是用 angularjs 编写的,但我认为这是一个 CSS 问题。我该如何解决这个问题?

我创建了一个小提琴,希望能解释这个问题:

Fiddle

HTML:

 <table>
    <tr>
        <td ng-click="flipCard()">
            <div class="card-container">
                <div class="card" ng-class="{'flipped': !deckVisible}">
                    <img class="front" ng-src="http://dummyimage.com/128x96/000/fff.jpg&text=3"> 
                    <img class="back" ng-src="http://dummyimage.com/128x96/000/fff.jpg&text=5">
                </div>
            </div>
        </td>
    </tr>
</table>

CSS:

.card-container {
    position: relative;
    width: 220px;
    height: 147px;
    -webkit-perspective: 800px;
    -moz-perspective: 800px;
    -ms-perspective: 800px;
    -o-perspective: 800px;
    perspective: 800px;
}

.card {
    width: 100%;
    height: 100%;
    -webkit-transition: -webkit-transform 1s;
    -moz-transition: -moz-transform 1s;
    -ms-transition: -ms-transform 1s;
    -o-transition: -o-transform 1s;
    transition: transform 1s;
    -webkit-transform-style: preserve-3d;
    -moz-transform-style: preserve-3d;
    -ms-transform-style: preserve-3d;
    -o-transform-style: preserve-3d;
    transform-style: preserve-3d;
}

.card.flipped {
    -webkit-transform: rotateY(180deg);
    -moz-transform: rotateY(180deg);
    -ms-transform: rotateY(180deg);
    -o-transform: rotateY(180deg);
    transform: rotateY(180deg);
}

.card img {
    position: absolute;
    display: block;
    height: 100%;
    width: 100%;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    -ms-backface-visibility: hidden;
    -o-backface-visibility: hidden;
    backface-visibility: hidden;
}

.card .back {
    -webkit-transform: rotateY(180deg);
    -moz-transform: rotateY(180deg);
    -ms-transform: rotateY(180deg);
    -o-transform: rotateY(180deg);
    transform: rotateY(180deg);
}

【问题讨论】:

    标签: angularjs css css-animations


    【解决方案1】:

    DEMO

    .card .back {
        -webkit-transform: rotateY(180deg);
        -moz-transform: rotateY(180deg);
        -ms-transform: rotateY(180deg);
        -o-transform: rotateY(180deg);
        transform: rotateY(180deg);
        -webkit-transform-style: preserve-3d;
        -moz-transform-style: preserve-3d;
        -ms-transform-style: preserve-3d;
        -o-transform-style: preserve-3d;
        transform-style: preserve-3d;
    }
    

    你忘了把preserve-3d放在后面的图片中

    【讨论】:

    • 这也有点奇怪,如果你简单地将 background-color: initial; 添加到 .card img,它也解决了这个问题。 forked fiddle
    • 是的,一个问题有很多解决方案。重要的是你首先想到的是哪个
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多