ก่้อนอื่นแนะนำให้กด

Ctrl + F5

เพราะเปลี่ยนเฮด + ธีม(นิดหน่อย)อีกแล้ว

ถ้าโหลดเสร็จจะสังเกตเห็นว่าบล็อกผมมีหิมะตก

.

.

.

ใช่ครับ~ วันนี้ผมจะมาสอนวิธีสร้างหิมะให้ตกลงในบล็อกกัน ><

...::::::::::::::::::::::::::::::::::::::::::::::::::::....

ช่วงนี้.. คงไม่มีใครบอกว่าที่บ้านอากาศร้อนหรอกเนอะ

อีกอย่างอีกไม่นานก็จะเข้าใกล้ x'mas และ ปีใหม่

ความหนาวเข้ามาคลุมความเหงาเยือนเราอีกครั้งแล้ว

ตกแต่ข้างนอกก็ยังไงอยู่ ตกในบล็อกด้วยเลยซะก็ดีใช่มั๊ย~

กติกาเดิมนะครับ

 
+ สีฟ้า Quick Start - สำหรับคนที่ขี้เกียจมากๆ (เหมาะสำหรับคนที่ต้องการใช้เวลาน้อย.. ) ให้อ่านกรอบสีฟ้าครับ (จะอยู่ด้านล่างสุดของเอนทรี่)
+ สีแดง Programing - สำหร้บคนขยันหน่อย อ่านทั้งหมดเลยแล้วกัน (ไม่มีความรู้เรื่องนี้ก็อ่านได้นะ)
 
  ข้อดีถ้าเรียนวิธีสีแดง
  • ถ้าเรียนวิธีสีแดง สามารถปรับแต่งจำนวนหิมะ ความเร็ว ได้
  • ถ้าใช้วิธีสีน้ำเงิน โอกาสโฮสล่มสูง แต่วิธีสีแดงถ้าอยู่กับเซิฟที่เราฝาก
 
1. copy คำสั่งด้านล่างนี้ใส่โปรแกรม notepad (หรือโปรแกรมอื่นๆ) เซฟไฟล์เป็น .js (่javascript) ครับ แล้วนำไฟล์ไปฝากไว้สักที่ บนเซิฟเวอร์ หรือเว็บฝากไฟล์ เช่น getDropbox หรือ  skydrive ก็ได้ (จากนั้นก็เอาเว็บที่อัพได้มาใช้) หรือ ถ้าไม่เคยสมัครบริการใดที่กล่าวมา มีอีกวิีธีที่ด้านล่างครับ
 
/*
DHTML Snowstorm! OO-style Jascript-based Snow effect
----------------------------------------------------
Version 1.4.20091115 (Previous rev: v1.3.20081215)
Code by Scott Schiller - http://schillmania.com
----------------------------------------------------
Initializes after body onload() by default (via addEventHandler() call at bottom.)
To customize properties, edit below or override configuration after this script
has run (but before body.onload), eg. snowStorm.snowStick = false;
*/
var snowStorm = null;
function SnowStorm() {
// --- PROPERTIES ---
this.flakesMax = 128;           // Limit total amount of snow made (falling + sticking)
this.flakesMaxActive = 64;      // Limit amount of snow falling at once (less = lower CPU use)
this.animationInterval = 33;    // Theoretical "miliseconds per frame" measurement. 20 = fast + smooth, but high CPU use. 50 = more conservative, but slower
this.flakeBottom = null;        // Integer for Y axis snow limit, 0 or null for "full-screen" snow effect
this.targetElement = null;      // element which snow will be appended to (document body if null/undefined) - can be an element ID string, or a DOM node reference
this.followMouse = true;        // Snow will change movement with the user's mouse
this.snowColor = '#fff';        // Don't eat (or use?) yellow snow.
this.snowCharacter = '•';  // • = bullet, · is square on some systems etc.
this.snowStick = true;          // Whether or not snow should "stick" at the bottom. When off, will never collect.
this.useMeltEffect = true;      // When recycling fallen snow (or rarely, when falling), have it "melt" and fade out if browser supports it
this.useTwinkleEffect = false;  // Allow snow to randomly "flicker" in and out of view while falling
this.usePositionFixed = false;  // true = snow not affected by window scroll. may increase CPU load, disabled by default - if enabled, used only where supported
// --- less-used bits ---
this.flakeLeftOffset = 0;       // amount to subtract from edges of container
this.flakeRightOffset = 0;      // amount to subtract from edges of container
this.flakeWidth = 8;            // max pixel width for snow element
this.flakeHeight = 8;           // max pixel height for snow element
this.vMaxX = 5;                 // Maximum X velocity range for snow
this.vMaxY = 4;                 // Maximum Y velocity range
this.zIndex = 0;                // CSS stacking order applied to each snowflake
// --- End of user section ---
// jslint global declarations
/*global window, document, navigator, clearInterval, setInterval */
var addEvent = (typeof(window.attachEvent)=='undefined'?function(o,evtName,evtHandler) {
return o.addEventListener(evtName,evtHandler,false);
}:function(o,evtName,evtHandler) {
return o.attachEvent('on'+evtName,evtHandler);
});
var removeEvent = (typeof(window.attachEvent)=='undefined'?function(o,evtName,evtHandler) {
return o.removeEventListener(evtName,evtHandler,false);
}:function(o,evtName,evtHandler) {
return o.detachEvent('on'+evtName,evtHandler);
});
function rnd(n,min) {
if (isNaN(min)) {
min = 0;
}
return (Math.random()*n)+min;
}
function plusMinus(n) {
return (parseInt(rnd(2),10)==1?n*-1:n);
}
var s = this;
var storm = this;
this.timers = [];
this.flakes = [];
this.disabled = false;
this.active = false;
var isIE = navigator.userAgent.match(/msie/i);
var isIE6 = navigator.userAgent.match(/msie 6/i);
var isOldIE = (isIE && (isIE6 || navigator.userAgent.match(/msie 5/i)));
var isWin9X = navigator.appVersion.match(/windows 98/i);
var isiPhone = navigator.userAgent.match(/iphone/i);
var isBackCompatIE = (isIE && document.compatMode == 'BackCompat');
var noFixed = ((isBackCompatIE || isIE6 || isiPhone)?true:false);
var screenX = null;
var screenX2 = null;
var screenY = null;
var scrollY = null;
var vRndX = null;
var vRndY = null;
var windOffset = 1;
var windMultiplier = 2;
var flakeTypes = 6;
var fixedForEverything = false;
var opacitySupported = (function(){
try {
document.createElement('div').style.opacity = '0.5';
} catch (e) {
return false;
}
return true;
})();
var docFrag = document.createDocumentFragment();
if (s.flakeLeftOffset === null) {
s.flakeLeftOffset = 0;
}
if (s.flakeRightOffset === null) {
s.flakeRightOffset = 0;
}
this.meltFrameCount = 20;
this.meltFrames = [];
for (var i=0; i=0 && s.vX<0.2) {
s.vX = 0.2;
} else if (s.vX<0 && s.vX>-0.2) {
s.vX = -0.2;
}
if (s.vY>=0 && s.vY<0.2) {
s.vY = 0.2;
}
};
this.move = function() {
var vX = s.vX*windOffset;
s.x += vX;
s.y += (s.vY*s.vAmp);
if (s.x >= screenX || screenX-s.x < storm.flakeWidth) { // X-axis scroll check
s.x = 0;
} else if (vX < 0 && s.x-storm.flakeLeftOffset<0-storm.flakeWidth) {
s.x = screenX-storm.flakeWidth-1; // flakeWidth;
}
s.refresh();
var yDiff = screenY+scrollY-s.y;
if (yDiff< 3 && !s.melting && Math.random()>0.998) {
// ~1/1000 chance of melting mid-air, with each frame
s.melting = true;
s.melt();
// only incrementally melt one frame
// s.melting = false;
}
if (storm.useTwinkleEffect) {
if (!s.twinkleFrame) {
if (Math.random()>0.9) {
s.