当前位置:首页 > VUE

vue实现底部波浪

2026-03-08 04:26:36VUE

使用 SVG 路径实现波浪效果

在 Vue 中,可以通过 SVG 路径 (<path>) 结合动态数据或 CSS 动画实现底部波浪效果。以下是一个基础实现示例:

<template>
  <div class="wave-container">
    <svg viewBox="0 0 1200 120" preserveAspectRatio="none">
      <path 
        :d="wavePath" 
        fill="#42b983" 
        stroke="none"
      ></path>
    </svg>
  </div>
</template>

<script>
export default {
  data() {
    return {
      waveFrequency: 0.015,
      waveAmplitude: 20,
      wavePoints: 20
    }
  },
  computed: {
    wavePath() {
      let path = `M 0 ${this.waveAmplitude}`
      for (let i = 0; i <= this.wavePoints; i++) {
        const x = i * (1200 / this.wavePoints)
        const y = Math.sin(i * this.waveFrequency) * this.waveAmplitude + this.waveAmplitude
        path += ` L ${x} ${y}`
      }
      path += ` L 1200 ${this.waveAmplitude * 2} L 0 ${this.waveAmplitude * 2} Z`
      return path
    }
  }
}
</script>

<style>
.wave-container {
  width: 100%;
  position: fixed;
  bottom: 0;
  left: 0;
}
svg {
  display: block;
  width: 100%;
  height: 60px;
}
</style>

添加 CSS 动画增强效果

通过 CSS 关键帧动画让波浪产生动态效果:

@keyframes waveAnimation {
  0% { transform: translateX(0) translateZ(0); }
  100% { transform: translateX(-50%) translateZ(0); }
}

.wave-container svg path {
  animation: waveAnimation 5s linear infinite;
}

使用第三方库简化实现

对于更复杂的波浪效果,可以使用 vue-waveswavesurfer.js 等库:

npm install vue-waves
<template>
  <vue-waves 
    :color="'#42b983'"
    :position="'bottom'"
  />
</template>

<script>
import VueWaves from 'vue-waves'
export default {
  components: { VueWaves }
}
</script>

响应式高度调整

通过监听窗口大小变化动态调整波浪高度:

export default {
  mounted() {
    window.addEventListener('resize', this.handleResize)
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.handleResize)
  },
  methods: {
    handleResize() {
      this.waveAmplitude = window.innerWidth < 768 ? 15 : 25
    }
  }
}

多层级波浪叠加

创建多个波浪路径形成更丰富的视觉效果:

vue实现底部波浪

<svg viewBox="0 0 1200 200">
  <path 
    v-for="(wave, index) in waves" 
    :key="index"
    :d="wave.path"
    :fill="wave.color"
    :opacity="wave.opacity"
    class="wave-layer"
  ></path>
</svg>
data() {
  return {
    waves: [
      { path: '', color: '#42b983', opacity: 0.7, frequency: 0.02 },
      { path: '', color: '#35495e', opacity: 0.5, frequency: 0.015 },
      { path: '', color: '#61dafb', opacity: 0.3, frequency: 0.01 }
    ]
  }
}

标签: 波浪vue
分享给朋友:

相关文章

vue实现签名

vue实现签名

实现Vue签名功能的步骤 安装签名库 使用vue-signature库可以快速实现签名功能。通过npm或yarn安装: npm install vue-signature --save # 或 ya…

vue实现下拉框删除

vue实现下拉框删除

Vue 实现下拉框删除功能 在Vue中实现下拉框的删除功能通常涉及以下步骤: 数据绑定与渲染 在Vue组件中定义数据数组用于存储下拉框选项: data() { return { op…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rout…

vue实现swiper

vue实现swiper

Vue 中实现 Swiper 的方法 安装 Swiper 依赖 在 Vue 项目中安装 Swiper 和相关依赖: npm install swiper vue-awesome-swiper 全局引…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另一…