js手持小风扇

文章目录

  • [1. 演示效果](#1. 演示效果)
  • [2. 分析思路](#2. 分析思路)
  • [3. 代码实现](#3. 代码实现)

1. 演示效果

2. 分析思路

  1. 先编写动画,让风扇先转起来。
  2. 使用 js 控制动画的持续时间。
  3. 监听按钮的点击事件,在事件中修改元素的animation-duration属性。

3. 代码实现

js 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>手持小风扇</title>
    <style>
      html,
      body {
        padding: 0px;
        margin: 0px;
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
      }

      .box {
        position: relative;
        width: 220px;
        height: 420px;
      }

      .top-part {
        width: 220px;
        height: 220px;
        box-sizing: border-box;
        position: relative;
      }

      .top-part .left-box {
        width: 220px;
        height: 220px;
        box-sizing: border-box;
        border-radius: 50%;
        border: 8px solid #333;

        animation: myRotate infinite linear;
      }

      @keyframes myRotate {
        0% {
          transform: rotate(0);
        }
        100% {
          transform: rotate(360deg);
        }
      }

      .top-part .left-box .leaf {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 50px;
        height: 100px;
        margin-left: -25px;
        border-radius: 50%;
        background-color: rgb(106, 106, 235);
        margin-top: -100px;
      }

      .top-part .left-box .leaf:nth-child(2) {
        transform: rotate(120deg);
        transform-origin: 50% 100%;
      }

      .top-part .left-box .leaf:nth-child(3) {
        transform: rotate(240deg);
        transform-origin: 50% 100%;
      }

      .line-box .line {
        position: absolute;
        top: 50%;
        left: 0px;
        width: 212px;
        height: 2px;
        background-color: #333;
        z-index: 10;
      }

      .line-box .line:nth-child(2) {
        transform: rotate(30deg);
      }

      .line-box .line:nth-child(3) {
        transform: rotate(60deg);
      }

      .line-box .line:nth-child(4) {
        transform: rotate(90deg);
      }

      .line-box .line:nth-child(5) {
        transform: rotate(120deg);
      }

      .line-box .line:nth-child(6) {
        transform: rotate(150deg);
      }

      .line-box .mid-dot {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 50px;
        height: 50px;
        margin-left: -25px;
        margin-top: -25px;
        background-color: #333;
        z-index: 11;
        border-radius: 50%;
      }

      .bom-part {
        width: 50px;
        height: 200px;
        background-color: #333;
        position: absolute;
        top: 215px;
        left: 50%;
        margin-left: -25px;
      }

      .bom-part .item {
        color: white;
        width: 22px;
        height: 22px;
        background-color: rgb(106, 106, 235);
        border-radius: 50%;
        font-size: 13px;
        display: flex;
        justify-content: center;
        align-items: center;
        margin: 0px auto;
        margin-top: 15px;
        cursor: pointer;
      }
    </style>
  </head>

  <body>
    <div class="box">
      <div class="top-part">
        <div class="line-box">
          <div class="line"></div>
          <div class="line"></div>
          <div class="line"></div>
          <div class="line"></div>
          <div class="line"></div>
          <div class="line"></div>
          <div class="mid-dot"></div>
        </div>
        <div class="left-box">
          <div class="leaf"></div>
          <div class="leaf"></div>
          <div class="leaf"></div>
        </div>
      </div>

      <div class="bom-part">
        <div class="item" onclick="run(1)">1</div>
        <div class="item" onclick="run(0.5)">2</div>
        <div class="item" onclick="run(0.2)">3</div>
        <div class="item" onclick="run(0)">关</div>
      </div>
    </div>
    <script>
      // 设置动画持续时间
      function run(num) {
        document.querySelector(".left-box").style.animationDuration = num + "s";
      }
    </script>
  </body>
</html>
相关推荐
_菜鸟果果9 小时前
高德地图 JS API 2.0 在国产 Linux/ARM 电脑上渲染失败 的排查与解决
linux·开发语言·javascript
迷途小羔羊10 小时前
项目概述
java·javascript·后端
迷迭绿10 小时前
Cesium 轨迹回放播放器
前端·javascript·cesium
燕落南枝11 小时前
CSS 类选择器详解:从入门到实战
前端·css
tryCbest12 小时前
Vue3——第 7 篇:组件基础——从注册到使用的完整流程
前端·javascript·vue.js
iCxhust14 小时前
模型:500kW飞轮 10kV输电线路 油田抽油机 同时考虑无功补偿 统计:全年节电量 结果56万度电
前端·css·css3·电力·飞轮
Eastmount14 小时前
[论文阅读] (54)NDSS26 JSIMPLIFIER:动静态与LLM如何协同完成JavaScript解混淆?
javascript·论文阅读·恶意代码分析·智能体安全·ndss
Ai-_Man15 小时前
ChatGPT还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·javascript·人工智能·chatgpt·小程序·ecmascript
miofly15 小时前
GitHub 今日推荐|security-audit-skill:让编码代理自己审计漏洞还互相验证
javascript·开源·github