
เทคนิคการทำ effect ฝนตกในหน้าเว็บโดยใช้ HTML5 CAVANS + JAVA-SCRIPT เอาไว้แต่งเว็บให้มีความน่าสนใจมากขึ้น
ในการทำเว็บมีบางครั้งที่เราอยากให้มี movement ให้เว็บดูมีชีวิตหรือเหมือนจริงมากขึ้นเพื่อไม่ให้น่าเบื่อเกินไป ช่วนนี้หน้าฝนเลยอย่ากทำเว็บและมี background เป็น ฝนตกลงในเว็บ จึงไปหาวิธีการทำมาฝากกันครับ
ตัวอย่าง สามารถเลือกความเร็วและจำนวนฝนได้ (จริงสามารถทำ option ได้มากกว่านี้)
ในส่วน CODE
1 เราจะทำการ include jquery เข้ามา
<script src="jquery.min.js"></script>
2 css ที่ใช้ในการทำเป็น BACKGROUND ให้กับหน้าเว็บ
body{
background:#000;
-webkit-background-size: cover; /* For WebKit*/
-moz-background-size: cover; /* Mozilla*/
-o-background-size: cover; /* Opera*/
background-size: cover; /* Generic*/
background-repeat: no-repeat;
background-position: center center;
height:100%;
width:100%;
background-image: url(bg.jpg) /* ใช่รูปพื้นหลัง */;
overflow: hidden;
}
3 ในส่วน body นั้นเราจะสร้าง Element Cavans ใช้ id ว่า rain
<canvas id="rain"></canvas>
4 ในส่วนนี้เราจะใช้ JAVASCRIPT เพื่อสร้างฝนใน cavans กัน
var canvas = $('#rain')[0]; // select cavans จาก id #rain
canvas.width = $( window ).width(); // ตั้งค่าความกว้าง cavans
canvas.height = $( window ).height(); // ตั้งค่าความสูง cavans
var ctx = canvas.getContext('2d');
var w = canvas.width;
var h = canvas.height;
ctx.strokeStyle = 'rgba(174,194,224,0.5)'; // กำหนดสีน้ำฝน
ctx.lineWidth = 1; // กำหนดขนาดเม็ดฝน
ctx.lineCap = 'round';
var particles = [];
var maxParts = 1000; // จำนวนนำฝน
var angle = -4; // องศา
var speed = 100; // ความเร็ว
function initrain(){ // function กาากำหนดตำแหน่งและความยาวของฝน
init=[];
for(var a = 0; a < maxParts; a++) {
init.push({
x: Math.random() * w,
y: Math.random() * h,
l: Math.random() * 1,
xs: angle + Math.random() * 4 + 2,
ys: Math.random() * 10 + 10
})
}
particles = [];
for(var b = 0; b < maxParts; b++) {
particles[b] = init[b];
}
}
function draw() { // function ในการวางฝนลงใน cavans
initrain();
ctx.clearRect(0, 0, w, h);
for(var c = 0; c < particles.length; c++) {
var p = particles[c];
ctx.beginPath();
ctx.moveTo(p.x, p.y);
ctx.lineTo(p.x + p.l * p.xs, p.y + p.l * p.ys);
ctx.stroke();
}
move();
}
function move() { // function ในการเปลี่ยนตำแหน่งฝน
for(var b = 0; b < particles.length; b++) {
var p = particles[b];
p.x += p.xs;
p.y += p.ys;
if(p.x > w || p.y > h) {
p.x = Math.random() * w;
p.y = -20;
}
}
}
var movement = setInterval(draw, speed/60);
ในส่วนหลักของ code ก็มีเท่านี้ครับ เพื่อนๆสามาถถดาวร์โหลด SOURCE CODE ไปลองศึกษากันได้ครับ
หากมีข้อสงสัยหรือติดชมได้เลยครับ