我在使用css3 animation时出现问题,想请教一下
现在有多个元素 点击按钮一个元素translate3d平移到屏幕中心,停留在最后状态,再次点击按钮这个元素回去,另一个元素同时平移。

css3: animation多个元素平移
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
7条回答 默认 最新
- zhu_xiaotong 2022-12-27 13:43关注
你要的是这样的吗?
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <style> .box { width: 100px; height: 100px; background-color: red; } /* 定义动画 */ @keyframes moveToCenter { from { transform: translate3d(0, 0, 0); } to { transform: translate3d(50%, 50%, 0); } } @keyframes moveBack { from { transform: translate3d(50%, 50%, 0); } to { transform: translate3d(0, 0, 0); } } /* 应用动画 */ .move-to-center { animation: moveToCenter 1s ease-in-out; animation-fill-mode: forwards; } .move-back { animation: moveBack 1s ease-in-out; animation-fill-mode: forwards; } </style> <body> <button class="" onclick="on()">点击</button> <div style="display: flex;"> <div class="element1 box"></div> <div class="element2 box"></div> </div> </body> <script> const element1 = document.querySelector('.element1'); const element2 = document.querySelector('.element2'); // 点击按钮时启动/停止动画 const button = document.querySelector('button'); button.addEventListener('click', () => { if (element1.classList.contains('move-to-center')) { element1.classList.remove('move-to-center'); element1.classList.add('move-back'); element2.classList.add('move-to-center'); } else { element1.classList.add('move-to-center'); element1.classList.remove('move-back'); element2.classList.remove('move-to-center'); } }); //监听move-back属性动画的最终位置,并赋值 const element = document.querySelector('.move-back'); element.addEventListener('animationend', () => { element.style.transform = 'translate3d(50%, 50%, 0)'; }); </script> </html>
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报