HTML代码:

<div class="windmill">
  <img src="windmill.png" alt="风车">
</div>

<button id="startBtn">开始</button>
<button id="speedUpBtn">加速</button>
<button id="speedDownBtn">减速</button>
<button id="stopBtn">结束</button>

CSS代码:

.windmill {
  width: 200px;
  height: 200px;
  position: relative;
  margin: 50px auto;
  animation: none;
}

.windmill img {
  width: 100%;
  height: 100%;
}

.windmill.rotate {
  animation: rotate 5s linear infinite;
}

@keyframes rotate {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

JavaScript代码:

var windmill = document.querySelector('.windmill');
var startBtn = document.querySelector('#startBtn');
var speedUpBtn = document.querySelector('#speedUpBtn');
var speedDownBtn = document.querySelector('#speedDownBtn');
var stopBtn = document.querySelector('#stopBtn');

var speed = 5; // 初始速度为5s/圈

startBtn.onclick = function() {
  windmill.classList.add('rotate');
}

speedUpBtn.onclick = function() {
  windmill.style.animationDuration = (speed - 1) + 's';
  speed--;
}

speedDownBtn.onclick = function() {
  windmill.style.animationDuration = (speed + 1) + 's';
  speed++;
}

stopBtn.onclick = function() {
  windmill.classList.remove('rotate');
}

解释:

首先,我们用querySelector方法获取到风车和四个按钮的元素,然后定义一个变量speed来保存风车的速度,初始速度为5s/圈。

接着,给开始按钮绑定一个点击事件,当点击开始按钮时,为风车元素添加rotate类,这个类在CSS中定义了一个动画效果,即让风车旋转起来。

然后,给加速按钮和减速按钮分别绑定点击事件。当点击加速按钮时,我们将风车动画的持续时间减1秒,即速度变快;当点击减速按钮时,我们将风车动画的持续时间加1秒,即速度变慢。同时,我们也要更新speed变量的值。

最后,给结束按钮绑定一个点击事件,当点击结束按钮时,移除风车元素的rotate类,即让风车停止转动


原文地址: https://www.cveoy.top/t/topic/ckmp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录