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 过渡无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章