CSS 过渡无法正常工作

Posted

技术标签:

【中文标题】CSS 过渡无法正常工作【英文标题】:CSS transition not correctly working 【发布时间】: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);

【问题讨论】:

【参考方案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 是的,一个问题有很多解决方案。重要的是你首先想到的是哪个

以上是关于CSS 过渡无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

ios上的CSS3过渡慢/不工作

使用片段共享过渡时返回过渡无法正常工作

CSS过渡不反向工作[重复]

自定义水平弹出过渡无法正常工作

Chrome 中的 CSS3 过渡故障

TFS 2018 过渡字段更新无法正常工作