当前位置:首页 > JavaScript

js实现风车

2026-01-31 16:19:05JavaScript

使用CSS和JavaScript实现风车动画

通过CSS定义风车叶片样式,使用JavaScript控制旋转动画。以下是实现步骤:

创建HTML结构

<div class="windmill">
  <div class="blade"></div>
  <div class="blade"></div>
  <div class="blade"></div>
  <div class="blade"></div>
</div>

添加CSS样式

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

.blade {
  position: absolute;
  width: 100px;
  height: 20px;
  background-color: #FF5722;
  top: 90px;
  left: 50px;
  transform-origin: 0 50%;
}

.blade:nth-child(1) { transform: rotate(0deg); }
.blade:nth-child(2) { transform: rotate(90deg); }
.blade:nth-child(3) { transform: rotate(180deg); }
.blade:nth-child(4) { transform: rotate(270deg); }

实现JavaScript动画

let rotation = 0;
const windmill = document.querySelector('.windmill');

function animate() {
  rotation += 2;
  if (rotation >= 360) rotation = 0;
  windmill.style.transform = `rotate(${rotation}deg)`;
  requestAnimationFrame(animate);
}

animate();

优化风车效果

添加中心点和风车支柱的样式:

.windmill::after {
  content: '';
  position: absolute;
  width: 20px;
  height: 20px;
  background: #333;
  border-radius: 50%;
  top: 90px;
  left: 90px;
}

.windmill::before {
  content: '';
  position: absolute;
  width: 10px;
  height: 150px;
  background: #795548;
  top: 200px;
  left: 95px;
}

控制动画速度

修改JavaScript代码调整旋转速度:

let rotation = 0;
const speed = 1; // 控制速度

function animate() {
  rotation += speed;
  windmill.style.transform = `rotate(${rotation}deg)`;
  requestAnimationFrame(animate);
}

响应式风车

添加鼠标悬停效果:

js实现风车

windmill.addEventListener('mouseenter', () => speed = 3);
windmill.addEventListener('mouseleave', () => speed = 1);

这个实现创建了一个四叶片风车,使用CSS transform属性进行旋转,通过requestAnimationFrame实现平滑动画。可以根据需要调整叶片数量、颜色和旋转速度。

标签: 风车js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…