要实现的具体效果是第一张图片有两个盒子,上面都有一个按钮,点击其中一个按钮,出现的第一个动画是第一张图片的两个盒子都占满全屏,第二个画面,我点击的那个按钮对应的盒子会占满全屏,然后沿着这个盒子平滑过渡出两个盒子,还带有一种折叠的效果,可以再给我提供一个更完善的代码吗


要实现的具体效果是第一张图片有两个盒子,上面都有一个按钮,点击其中一个按钮,出现的第一个动画是第一张图片的两个盒子都占满全屏,第二个画面,我点击的那个按钮对应的盒子会占满全屏,然后沿着这个盒子平滑过渡出两个盒子,还带有一种折叠的效果,可以再给我提供一个更完善的代码吗


阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你想要实现一个平滑过渡的动画效果,点击按钮后,两个盒子会占满全屏,然后沿着点击的盒子平滑过渡。可以使用 CSS3 的 transition 和 animation 属性来实现。
首先,需要给盒子添加类名,例如 .box,然后在 CSS 中定义 transition 和 animation 属性:
.box {
transition: all 0.5s ease-in-out;
animation: slideIn 0.5s forwards;
}
.box.active {
animation: slideOut 0.5s forwards;
}
@keyframes slideIn {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0);
}
}
@keyframes slideOut {
from {
transform: translateX(0);
}
to {
transform: translateX(100%);
}
}
然后,在 HTML 中添加按钮和盒子:
<div class="box">
<button>按钮 1</button>
<div class="inner">内容 1</div>
</div>
<div class="box">
<button>按钮 2</button>
<div class="inner">内容 2</div>
</div>
最后,在 JavaScript 中添加点击事件,切换盒子的类名:
const boxes = document.querySelectorAll('.box');
boxes.forEach((box) => {
box.addEventListener('click', () => {
box.classList.toggle('active');
});
});
这样,当你点击按钮时,盒子会占满全屏,然后沿着点击的盒子平滑过渡。
你可以查看以下代码示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>平滑过渡动画</title>
<style>
.box {
transition: all 0.5s ease-in-out;
animation: slideIn 0.5s forwards;
width: 50%;
height: 100vh;
background-color: #f0f0f0;
position: relative;
}
.box.active {
animation: slideOut 0.5s forwards;
}
@keyframes slideIn {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0);
}
}
@keyframes slideOut {
from {
transform: translateX(0);
}
to {
transform: translateX(100%);
}
}
</style>
</head>
<body>
<div class="box">
<button>按钮 1</button>
<div class="inner">内容 1</div>
</div>
<div class="box">
<button>按钮 2</button>
<div class="inner">内容 2</div>
</div>
<script>
const boxes = document.querySelectorAll('.box');
boxes.forEach((box) => {
box.addEventListener('click', () => {
box.classList.toggle('active');
});
});
</script>
</body>
</html>
这个示例代码展示了如何使用 CSS3 的 transition 和 animation 属性来实现平滑过渡动画效果。