jquery - 点击 GSAP 将卡片转回
问题描述
我有一个项目,它有翻转卡片,在我查看 IE(10 和 11)之前,我一直工作得很好。我了解变换样式:preserve-3d;IE 不支持,所以我决定走另一条路。我偶然发现了一个使用 GSAP 的修复程序和一个在 IE 中工作的 codepen 示例。我的问题是我希望它在点击时来回旋转而不是悬停。没有太多 GSAP 经验有没有办法在点击时反转动画?
更新的问题:我想在卡片中点击“按钮”时触发动画,而不是在整个容器上。我已经设置了,但唯一的问题是它会翻转所有卡片,而不是像我想要的那样只翻转一张
HTML:
<div id="mainWrap">
<div class="cardCont">
<div class="cardBack">Back</div>
<div class="cardFront">Front</div>
</div>
<div class="cardCont">
<div class="cardBack">Back</div>
<div class="cardFront">Front</div>
</div>
</div>
GSAP:
//Card flip animations
TweenMax.set($($flipCardBack), {rotationY: -180});
$.each($flipCardContainer, function (i, element) {
var frontCard = $(this).find('.flip-card-front'),
backCard = $(this).find('.flip-card-back'),
tl = new TimelineMax({paused: true, reversed: true});
tl
.to(frontCard, 1, {rotationY: 180})
.to(backCard, 1, {rotationY: 0}, 0)
.to(element, .5, {z: 50}, 0)
.to(element, .5, {z: 0}, .5);
element.animation = tl;
$('.flip-card__toggle').on('click', function () {
if (tl.progress() === 0
|| tl.reversed()) {
tl.play();
} else {
tl.reverse();
}
});
});
解决方案
当然,这很容易使用 GSAP 的.reverse()
方法:
$('.cardCont').on('click', function elOver() {
// If the animation hasn't been ran or it's been reversed
if(this.animation.progress() === 0
|| this.animation.reversed()) {
this.animation.play();
} else { // If it has been played forwards
this.animation.reverse();
}
});
一般来说,最好发布一个最小的、完整的、可验证的问题示例,以便我们可以调试这样的代码并向您展示它的工作原理。
推荐阅读
- java - 调用 init 方法失败;嵌套异常是 java.lang.ClassCastException:java.time.LocalDateTime 不能转换为 java.lang.String
- python - 尝试通过 ansible 任务在 SQL Server 上创建数据库时 pymssql 出现分段错误
- mongodb - Mongodb文本搜索(精确匹配、模糊匹配)
- javascript - 同步 iframe
- r - 如何在R中的同一图中将线图和箱线图与显着差异结合起来
- javascript - 带有 Express Swagger 生成器的自定义标头?
- git - 错误:GH008:您的推送引用了至少 4 个未知的 Git LFS 对象
- object-detection - 如何理解 yolov4 训练是否过拟合?
- twitter-bootstrap - 如何在 scss 中启用引导 rtl
- node.js - 请求失败,状态码 403,访问被拒绝:令牌无效,代码错误