vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue3雪花漂浮

基于Vue3实现一个简单的雪花漂浮效果

作者:江城开朗的豌豆

随着冬季的到来,许多网站和应用程序都会添加一些节日氛围的元素,比如雪花飘落的效果,本文将教你如何在 Vue 3 中实现一个简单的雪花漂浮效果,为你的网页增添一丝冬日的浪漫,感兴趣的小伙伴跟着小编一起来看看吧

效果预览

在开始之前,我们先来看一下最终效果:

实现思路

我们将使用 Vue 3 的 Composition API 动态生成雪花,并结合 CSS 实现动画效果。具体步骤如下:

实现步骤

1. 创建 Vue 3 项目

如果你还没有 Vue 3 项目,可以通过以下命令创建一个:

npm init vue@latest

然后按照提示完成项目初始化。

2. 编写雪花组件

在你的 Vue 组件中(例如 Snowflake.vue),编写以下代码:

<template>
  <div class="snow-container">
    <!-- 雪花元素 -->
    <div
      v-for="(snowflake, index) in snowflakes"
      :key="index"
      :style="snowflake.style"
      class="snowflake"
    >
      ❄
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue';

// 雪花数组
const snowflakes = ref([]);

// 创建雪花
function createSnowflake() {
  const snowflake = {
    style: {
      left: `${Math.random() * 100}%`, // 随机水平位置
      fontSize: `${Math.random() * 20 + 10}px`, // 随机大小(10px - 30px)
      animationDuration: `${Math.random() * 5 + 5}s`, // 随机动画时长(5s - 10s)
      animationDelay: `${Math.random() * 5}s`, // 随机动画延迟(0s - 5s)
    },
  };
  snowflakes.value.push(snowflake);

  // 雪花飘落后移除
  setTimeout(() => {
    snowflakes.value = snowflakes.value.filter((item) => item !== snowflake);
  }, parseFloat(snowflake.style.animationDuration) * 1000);
}

// 定时生成雪花
let interval;
onMounted(() => {
  interval = setInterval(createSnowflake, 100); // 每 100ms 生成一个雪花
});

// 组件卸载时清除定时器
onUnmounted(() => {
  clearInterval(interval);
});
</script>

<style scoped>
.snow-container {
  position: relative;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  background: #0a2a43; /* 背景色 */
}

.snowflake {
  position: absolute;
  top: -10%;
  color: #fff; /* 雪花颜色 */
  user-select: none; /* 禁止选中 */
  animation: fall linear infinite;
}

@keyframes fall {
  to {
    transform: translateY(100vh); /* 雪花从顶部飘落到底部 */
  }
}
</style>

3. 在主组件中使用雪花组件

在你的主组件(例如 App.vue)中使用 Snowflake.vue 组件:

<template>
  <div id="app">
    <Snowflake />
    <!-- 其他内容 -->
  </div>
</template>

<script setup>
import Snowflake from './components/Snowflake.vue';
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  text-align: center;
  color: #2c3e50;
}
</style>

代码说明

扩展

结语

通过本文的介绍,你已经学会了如何在 Vue 3 中实现一个简单的雪花漂浮效果。希望这个效果能为你的网页增添一丝冬日的浪漫氛围。

到此这篇关于基于Vue3实现一个简单的雪花漂浮效果的文章就介绍到这了,更多相关Vue3雪花漂浮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文