色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 水波紋 特效

趙雅婷1年前6瀏覽0評論
javascript水波紋特效是一個非常實用的前端效果,可以實現(xiàn)點擊時出現(xiàn)的類似水波紋的效果,讓整個頁面看起來更加生動、動態(tài)。下面我們就來一起看看javascript水波紋特效的使用方法和實現(xiàn)原理。 首先,我們需要引入一個庫文件——ripples.js,這是一個非常好用的javascript水波紋特效庫,可以使我們的代碼變得更加簡單易用。下面是一段使用ripples.js實現(xiàn)水波紋特效的代碼:
$('body').ripples({
resolution: 512,
dropRadius: 20,
perturbance: 0.04,
});
在這段代碼中,我們首先選擇了我們要添加水波紋效果的頁面元素,這里我選擇的是body,你可以根據(jù)自己的需求自行去選擇。接著,我們調(diào)用ripples.js library,傳入一些參數(shù)——resolution、dropRadius和perturbance。其中, resolution表示水波的分辨率,值越大,水波的紋路就會越密集; dropRadius表示水滴半徑,即初始生成水波的半徑大??; perturbance表示水波的波動幅度,值越大,波動越明顯。 使用這個庫之前需要注意,確保你已經(jīng)引入jquery和ripples.js兩個庫。另外,使用這個庫的效果在IE系列瀏覽器中可能會出現(xiàn)異常,建議使用時測試一下。 如果你想把水波紋效果添加到自己的一些元素中去,可以使用如下代碼:
$(document).ready(function() {
$('button').ripples({
resolution: 256,
dropRadius: 20,
perturbance:0.03,
interactive:true
});
});
這里我們把水波紋效果添加到某一個button元素上,通過給button添加class或者id,也可以添加到其他的元素上。 javascript水波紋特效的實現(xiàn)原理其實非常簡單,就是通過canvas元素和一些計算來實現(xiàn)的。下面是簡單的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的大小,并為其添加了鼠標(biāo)點擊事件,當(dāng)鼠標(biāo)點擊時,就會有水波紋出現(xiàn)。然后定義了一個animate()方法,用于清除canvas畫布并重繪每一幀;定義了一個Wave()方法,用于生成水波紋并在畫布中繪制;最后在animate()方法中循環(huán)繪制所有水波紋。 通過以上代碼,我們可以發(fā)現(xiàn)實現(xiàn)水波特效其實是非常簡單的,只需要了解一些基礎(chǔ)的canvas繪圖知識和一些數(shù)學(xué)知識,就能夠高效地實現(xiàn)這個效果。