当前位置:首页 > JavaScript

js实现糖果

2026-04-06 04:10:28JavaScript

实现糖果效果的 JavaScript 方法

创建糖果元素

使用 document.createElement 动态生成糖果元素,设置样式为圆形或方形,赋予随机颜色和大小。通过 CSS 定位确保糖果可以自由移动。

function createCandy() {
  const candy = document.createElement('div');
  candy.className = 'candy';
  candy.style.width = `${Math.random() * 20 + 10}px`;
  candy.style.height = candy.style.width;
  candy.style.backgroundColor = `hsl(${Math.random() * 360}, 100%, 50%)`;
  candy.style.position = 'absolute';
  candy.style.left = `${Math.random() * window.innerWidth}px`;
  candy.style.top = `${Math.random() * window.innerHeight}px`;
  document.body.appendChild(candy);
  return candy;
}

添加动画效果

利用 requestAnimationFrame 实现平滑动画,通过改变糖果的 transform 属性实现旋转和浮动效果。随机生成运动轨迹增强视觉趣味性。

js实现糖果

function animateCandy(candy) {
  let angle = 0;
  const speed = Math.random() * 0.02 + 0.01;
  const floatRange = Math.random() * 20 + 10;
  let floatDirection = 1;

  function update() {
    angle += speed;
    const floatOffset = Math.sin(angle) * floatRange * floatDirection;
    candy.style.transform = `rotate(${angle}rad) translateY(${floatOffset}px)`;
    requestAnimationFrame(update);
  }
  update();
}

批量生成糖果

通过循环创建多个糖果实例,并分别启动动画。可以设置数量参数控制糖果密度,避免性能问题。

js实现糖果

function generateCandies(count) {
  for (let i = 0; i < count; i++) {
    const candy = createCandy();
    animateCandy(candy);
  }
}

generateCandies(30);

添加交互功能

为糖果元素添加点击事件,点击时播放音效并消失,增强用户体验。使用 classList.add 触发 CSS 动画实现消失效果。

function addCandyInteraction(candy) {
  candy.addEventListener('click', () => {
    candy.classList.add('disappear');
    setTimeout(() => candy.remove(), 500);
  });
}

补充 CSS 样式

配合 JavaScript 实现视觉效果,定义糖果的基础样式和消失动画。使用 CSS 变量保持风格一致性。

.candy {
  border-radius: 50%;
  cursor: pointer;
  transition: transform 0.2s ease;
  box-shadow: 0 0 10px rgba(0,0,0,0.2);
}

.candy.disappear {
  animation: fadeOut 0.5s forwards;
}

@keyframes fadeOut {
  to { opacity: 0; transform: scale(0.5); }
}

该方法组合了 DOM 操作、动画原理和事件处理,可根据需求调整参数如糖果数量、大小范围和运动速度。注意在移除元素时清理事件监听器避免内存泄漏。

标签: 糖果js
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…