當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
前段JS绘制动态海浪效果
生活随笔
收集整理的這篇文章主要介紹了
前段JS绘制动态海浪效果
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
細(xì)膩復(fù)雜動(dòng)畫的制作一般要通過(guò)canvas來(lái)動(dòng)態(tài)繪制,需要具備一定的算法基礎(chǔ)。
以下js是模擬海浪效果的算法(可直接使用),分享給大家。
<div id="wave" style="width: 200px;height: 100px;"></div> <script>(function () {//自定義命名空間var homePage = {};homePage.color = "#87d6fe"; //設(shè)置wave顏色homePage.waveEffect = function () {homePage.wave = document.getElementById("wave"); //選中渲染元素homePage.canvas = document.createElement('canvas');homePage.ctx = homePage.canvas.getContext('2d');homePage.canvas.width = wave.offsetWidth;homePage.canvas.height = wave.offsetHeight;homePage.wave.appendChild(homePage.canvas);homePage.animate();homePage.r = 50 / 100; //設(shè)置水面高度(占比畫布)};homePage.animate = function () {var requestAnimationFrame =window.requestAnimationFrame ||window.mozRequestAnimationFrame ||window.webkitRequestAnimationFrame ||window.msRequestAnimationFrame ||function (callback) {window.setTimeout(callbacks, 1000 / 60); //以一個(gè)恰當(dāng)?shù)膸瑪?shù)渲染動(dòng)畫};homePage.loop();};homePage.step = 0;homePage.loop = function () {homePage.step += 3; //設(shè)置浪花緩急var changeHeight = 15; //設(shè)置浪花大小if (homePage.r == 1 || homePage.r == 0) {changeHeight = 0;}var height = homePage.canvas.height - homePage.canvas.height * homePage.r;var angle = homePage.step * Math.PI / 180;var deltaHeight = Math.cos(angle) * changeHeight;var deltaHeightRight = Math.sin(angle) * changeHeight;homePage.ctx.clearRect(0, 0, homePage.canvas.width, homePage.canvas.height);homePage.ctx.beginPath();homePage.ctx.lineWidth = 0;homePage.ctx.fillStyle = homePage.color;homePage.ctx.moveTo(0, height + deltaHeight - changeHeight);homePage.ctx.bezierCurveTo(homePage.canvas.width / 2, height + deltaHeight, homePage.canvas.width / 2, height + deltaHeightRight, homePage.canvas.width, height + deltaHeightRight); //繪制一條三次貝塞爾曲線:homePage.ctx.lineTo(homePage.canvas.width, homePage.canvas.height);homePage.ctx.lineTo(0, homePage.canvas.height);homePage.ctx.lineTo(0, height + deltaHeight - changeHeight);homePage.ctx.closePath();homePage.ctx.fill();requestAnimationFrame(homePage.loop);};window.HomePageJS = homePage;})()HomePageJS.waveEffect();</script>?
總結(jié)
以上是生活随笔為你收集整理的前段JS绘制动态海浪效果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 第一天的闲话
- 下一篇: 质量管理的八项原则(转载)