

要orcle.cn这个网站的效果做一个类似的,当我们点击一个按钮的时候,这个盒子会相应的变大,并且沿着这两个盒子会平滑过渡出两个盒子,这个效果要怎么实现


上午好☀️☀️☀️️
本答案参考通义千问
要实现点击一个盒子内的按钮后,该盒子变大并且沿盒子方向平滑过渡出两个新盒子的效果,可以按照以下步骤进行:
HTML结构:首先,我们需要创建一个基本的HTML结构,包括一个包含按钮的初始盒子,以及准备在点击时显示的两个新盒子。
CSS样式:使用CSS来定义盒子的初始样式,以及它们在动画过程中的过渡效果。
JavaScript逻辑:编写JavaScript代码来处理点击事件,调整盒子大小,并添加新盒子到DOM中。
下面是具体的实现步骤及示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Expand Box Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="main-box">
<button id="expand-btn">Expand</button>
<div id="additional-boxes">
<!-- 新盒子将会被动态添加到这里 -->
</div>
</div>
<script src="script.js"></script>
</body>
</html>
/* styles.css */
#main-box {
width: 100px;
height: 100px;
background-color: lightblue;
transition: all 0.5s ease; /* 平滑过渡效果 */
position: relative;
}
#additional-boxes div {
width: 100px;
height: 100px;
background-color: lightgreen;
position: absolute;
top: 0;
left: 100%;
transition: transform 0.5s ease;
}
.expanded {
width: 200px;
height: 200px;
}
// script.js
document.getElementById('expand-btn').addEventListener('click', function() {
var mainBox = document.getElementById('main-box');
var additionalBoxes = document.getElementById('additional-boxes');
// 添加新的盒子
var newBox1 = document.createElement('div');
var newBox2 = document.createElement('div');
newBox1.className = 'box';
newBox2.className = 'box';
additionalBoxes.appendChild(newBox1);
additionalBoxes.appendChild(newBox2);
// 动态调整盒子位置
newBox1.style.transform = 'translateX(-100%)';
newBox2.style.transform = 'translateX(0)';
// 主盒子放大
mainBox.classList.add('expanded');
// 让新盒子向右滑入
setTimeout(function() {
newBox1.style.transform = 'translateX(0)';
newBox2.style.transform = 'translateX(100%)';
}, 50); // 确保动画结束后再执行此操作
});
HTML:定义了主盒子(#main-box),其中包含一个按钮(#expand-btn)和一个用于放置新盒子的容器(#additional-boxes)。
CSS:设置了主盒子的基本样式和过渡效果,以及新盒子的位置和过渡效果。当主盒子类名变为.expanded时,它会放大。
JavaScript:为按钮添加了一个点击事件监听器,点击时执行以下操作:
setTimeout函数让它们滑入。.expanded类名来放大。这样就实现了点击按钮后,主盒子变大,并且两个新盒子从主盒子一侧平滑过渡出来。