要在JavaScript中实现一个花俏的转动、旋转之后慢慢张开的窗口特效,我们可以使用CSS动画和JavaScript来控制动画的开始和结束。这里我将提供一个基本的示例,展示如何使用CSS来创建动画,并使用JavaScript来触发动画的开始。
首先,是HTML部分,定义一个用于展示动画的容器:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>动画窗口</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="animated-window" id="animatedWindow">
<!-- 窗口内容 -->
<p>这是一个动画窗口!</p>
</div>
<button onclick="startAnimation()">开始动画</button>
<script src="script.js"></script>
</body>
</html>
接着是CSS部分(styles.css),用于定义动画效果:
.animated-window {
width: 100px;
height: 100px;
background-color: #4CAF50;
color: white;
text-align: center;
line-height: 100px;
margin: 50px;
transition: all 1s ease; /* 平滑过渡效果 */
transform-origin: center; /* 旋转中心点 */
opacity: 0; /* 初始透明度 */
}
/* 定义关键帧动画 */
@keyframes rotateAndExpand {
0% {
transform: rotate(0deg) scale(0);
opacity: 0;
}
50% {
transform: rotate(360deg) scale(0.5);
opacity: 0.5;
}
100% {
transform: rotate(0deg) scale(1);
opacity: 1;
}
}
.animated-window.active {
animation: rotateAndExpand 2s forwards; /* 播放动画,完成后保持最后一帧状态 */
}
最后是JavaScript部分(script.js),用于触发动画:
function startAnimation() {
var window = document.getElementById('animatedWindow');
window.classList.add('active'); // 添加类名以触发动画
}
在这个例子中,当用户点击按钮时,`startAnimation`函数会被调用,该函数会给`.animated-window`元素添加一个`active`类名。CSS中定义的`.active`类名关联了一个`rotateAndExpand`的动画,该动画会先旋转并放大元素,然后逐渐缩小并停止旋转,同时透明度从0变为1。
你可以根据具体需求调整动画的时长、旋转角度、缩放比例等参数。