当前位置:首页 > VUE

vue实现底部波浪

2026-01-15 01:42:53VUE

Vue 实现底部波浪效果

在 Vue 中实现底部波浪效果,可以通过 SVG 或 CSS 绘制波浪形状。以下是两种常见方法:

SVG 波浪实现

使用 SVG 的 path 元素绘制波浪路径,通过 Vue 动态控制样式或动画:

vue实现底部波浪

<template>
  <div class="wave-container">
    <svg viewBox="0 0 1200 120" preserveAspectRatio="none">
      <path 
        d="M0,0V46.29c47.79,22.2,103.59,32.17,158,28,70.36-5.37,136.33-33.31,206.8-37.5C438.64,32.43,512.34,53.67,583,72.05c69.27,18,138.3,24.88,209.4,13.08,36.15-6,69.85-17.84,104.45-29.34C989.49,25,1113-14.29,1200,52.47V0Z" 
        fill="currentColor"
        opacity=".25"
        class="wave-path"
      ></path>
      <path 
        d="M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z" 
        fill="currentColor"
        class="wave-path"
      ></path>
    </svg>
  </div>
</template>

<style scoped>
.wave-container {
  position: relative;
  height: 150px;
  width: 100%;
  overflow: hidden;
  color: #42b983; /* 波浪颜色 */
}

.wave-path {
  animation: wave 8s linear infinite;
}

@keyframes wave {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
</style>

CSS 波浪实现

使用纯 CSS 的 border-radius 和伪元素创建波浪效果:

<template>
  <div class="wave"></div>
</template>

<style scoped>
.wave {
  position: relative;
  height: 70px;
  width: 100%;
  background: #42b983;
}

.wave::before {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  right: 0;
  background-repeat: repeat;
  height: 10px;
  background-size: 20px 20px;
  background-image: radial-gradient(
    circle at 10px -5px, 
    transparent 12px, 
    white 13px
  );
}

.wave::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  right: 0;
  background-repeat: repeat;
  height: 15px;
  background-size: 40px 20px;
  background-image: radial-gradient(
    circle at 10px 15px, 
    white 12px, 
    transparent 13px
  );
}
</style>

动态波浪高度

通过 Vue 的响应式数据控制波浪高度:

vue实现底部波浪

<template>
  <div class="container">
    <svg class="wave" :viewBox="`0 0 1200 ${waveHeight}`">
      <path :d="wavePath" fill="#42b983"></path>
    </svg>
  </div>
</template>

<script>
export default {
  data() {
    return {
      waveHeight: 120,
      wavePath: 'M0,0V46.29c47.79,22.2,103.59,32.17,158,28...' // 完整路径
    }
  }
}
</script>

使用第三方库

安装 vue-waves 等专门库快速实现:

npm install vue-waves
<template>
  <vue-waves :color="waveColor" :height="waveHeight"/>
</template>

<script>
import VueWaves from 'vue-waves';

export default {
  components: { VueWaves },
  data() {
    return {
      waveColor: '#42b983',
      waveHeight: 100
    }
  }
}
</script>

关键点:

  • SVG 路径可通过在线工具生成(如 getwaves.io)
  • 动画效果通过 CSS transformanimation 实现
  • 响应式设计需考虑 viewBox 和容器尺寸的适配

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

相关文章

vue实现点击页面切换

vue实现点击页面切换

实现点击页面切换功能 在Vue中实现点击页面切换功能,可以通过路由跳转或组件动态渲染两种方式完成。以下是具体实现方法: 使用Vue Router实现页面跳转 安装Vue Router后,在项目中配置…

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独立…

vue实现sso

vue实现sso

Vue 实现 SSO(单点登录)方案 单点登录(SSO)允许用户通过一次登录访问多个相关系统。以下是基于 Vue 的实现方案: 使用 OAuth2/OpenID Connect 协议 OAuth2…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现盖章

vue实现盖章

Vue 实现盖章功能 在Vue中实现盖章功能通常涉及前端UI交互,通过Canvas或SVG绘制印章,并允许用户拖拽或点击放置印章。以下是具体实现方法: 使用Canvas绘制印章 通过HTML5的Ca…

vue代理实现

vue代理实现

Vue 代理实现方法 在 Vue 项目中,配置代理可以解决开发环境下的跨域问题,通常通过修改 vue.config.js 文件实现。以下是几种常见的代理配置方式: 基础代理配置 在 vue.conf…