欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 水波紋 特效

趙雅婷1年前6瀏覽0評論
javascript水波紋特效是一個非常實用的前端效果,可以實現點擊時出現的類似水波紋的效果,讓整個頁面看起來更加生動、動態。下面我們就來一起看看javascript水波紋特效的使用方法和實現原理。 首先,我們需要引入一個庫文件——ripples.js,這是一個非常好用的javascript水波紋特效庫,可以使我們的代碼變得更加簡單易用。下面是一段使用ripples.js實現水波紋特效的代碼:
$('body').ripples({
resolution: 512,
dropRadius: 20,
perturbance: 0.04,
});
在這段代碼中,我們首先選擇了我們要添加水波紋效果的頁面元素,這里我選擇的是body,你可以根據自己的需求自行去選擇。接著,我們調用ripples.js library,傳入一些參數——resolution、dropRadius和perturbance。其中, resolution表示水波的分辨率,值越大,水波的紋路就會越密集; dropRadius表示水滴半徑,即初始生成水波的半徑大小; perturbance表示水波的波動幅度,值越大,波動越明顯。 使用這個庫之前需要注意,確保你已經引入jquery和ripples.js兩個庫。另外,使用這個庫的效果在IE系列瀏覽器中可能會出現異常,建議使用時測試一下。 如果你想把水波紋效果添加到自己的一些元素中去,可以使用如下代碼:
$(document).ready(function() {
$('button').ripples({
resolution: 256,
dropRadius: 20,
perturbance:0.03,
interactive:true
});
});
這里我們把水波紋效果添加到某一個button元素上,通過給button添加class或者id,也可以添加到其他的元素上。 javascript水波紋特效的實現原理其實非常簡單,就是通過canvas元素和一些計算來實現的。下面是簡單的canvas繪制水波的代碼:
window.requestAnimFrame = (function() {
return  window.requestAnimationFrame       ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame    ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.addEventListener('mousedown', function(e) {
ripple(e.clientX, e.clientY);
});
function ripple(x, y) {
waves.push(new Wave(x, y));
}
animate();
function animate() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i< waves.length; i++) {
waves[i].draw();
}
requestAnimFrame(animate);
}
function Wave(x, y) {
this.x = x;
this.y = y;
this.radius = 1;
this.maxRadius = Math.sqrt(Math.pow(canvas.width, 2) + Math.pow(canvas.height, 2));
}
Wave.prototype.draw = function() {
var index = waves.indexOf(this);
if (index >-1) {
waves.splice(index, 1);
}
this.radius += 2;
if (this.radius >= this.maxRadius) {
return;
}
ctx.beginPath();
ctx.arc(this.x, this.y, this.radius, 0, 2 * Math.PI, false);
ctx.lineWidth = 3;
ctx.strokeStyle = 'rgba(255, 255, 255,' + (1 - (this.radius / this.maxRadius)) + ')';
ctx.stroke();
};
這段代碼中,我們首先定義了一個window.requestAnimFrame()方法,用于不斷地更新canvas畫布。接著,我們初始化了canvas的大小,并為其添加了鼠標點擊事件,當鼠標點擊時,就會有水波紋出現。然后定義了一個animate()方法,用于清除canvas畫布并重繪每一幀;定義了一個Wave()方法,用于生成水波紋并在畫布中繪制;最后在animate()方法中循環繪制所有水波紋。 通過以上代碼,我們可以發現實現水波特效其實是非常簡單的,只需要了解一些基礎的canvas繪圖知識和一些數學知識,就能夠高效地實現這個效果。