当前位置:首页 > JavaScript

js实现波浪线

2026-03-16 02:53:10JavaScript

使用SVG路径绘制波浪线

通过SVG的<path>元素可以绘制平滑的波浪线,利用贝塞尔曲线实现波浪效果。以下是一个简单实现:

js实现波浪线

<svg width="300" height="100" viewBox="0 0 300 100">
  <path d="M0,50 C50,0 100,100 150,50 S250,0 300,50" 
        stroke="blue" 
        fill="none"
        stroke-width="2"/>
</svg>
  • d属性中的C表示三次贝塞尔曲线
  • S命令会自动对称延续前一个控制点
  • 调整坐标值可以改变波浪的幅度和频率

Canvas动态波浪动画

使用Canvas可以实现动态波浪效果:

js实现波浪线

const canvas = document.getElementById('waveCanvas');
const ctx = canvas.getContext('2d');

let time = 0;
function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.beginPath();

  for(let x = 0; x < canvas.width; x++) {
    const y = 50 + 20 * Math.sin(x * 0.05 + time);
    ctx.lineTo(x, y);
  }

  ctx.strokeStyle = 'blue';
  ctx.lineWidth = 2;
  ctx.stroke();

  time += 0.1;
  requestAnimationFrame(animate);
}
animate();
  • 通过正弦函数生成波浪形状
  • 随时间变化产生动画效果
  • 调整振幅和频率参数可改变波浪形态

CSS波浪线效果

使用CSS伪元素和border-radius可以创建简单波浪线:

.wave-line {
  position: relative;
  height: 20px;
  overflow: hidden;
}

.wave-line::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 10px;
  background: radial-gradient(10px at 10px 10px, transparent 50%, blue 50%);
  background-size: 20px 20px;
}
  • 利用径向渐变创建重复的半圆图案
  • 调整background-size改变波浪间距
  • 适合不需要精确控制的装饰性波浪线

使用第三方库

对于复杂波浪效果,可以考虑使用专业库:

这些库提供更高级的配置选项和性能优化,适合生产环境使用。

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

相关文章

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…