当前位置:首页 > 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
分享给朋友:

相关文章

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…