在 Google 搜索 Let it snow 的效果是怎麼實現的?
搜索頁面 http://www.google.com.hk/search?sourceid=chromeie=UTF-8q=let+it+snow
雪花是一個個 ? ? ? 符號,通過 JavaScript 不段地改變其父級元素的位置,從而控制它們隨機擺動、落下。雪花的大小、顏色由隨機生成的,在一定範圍內的 font-size 和 color 屬性來控制。
雪花的數目應該是固定的(200 個),也就是說,當雪花掉到地上後,會從天空上重新飄下來。
結冰的效果是通過在一個覆蓋全屏幕的 canvas 上繪製霜狀圖形的方式實現的。霜狀圖形的顏色是透明的,比如底層淺藍色的 rgba 值就是(240, 246, 246, 0.08)。
程序會檢測滑鼠事件,當滑鼠按下時,會將滑鼠坐標周圍一塊面積內的圖形清空,來達到除霜的效果。
點擊 Defrost 將會把 canvas 移除,從而去掉了霜層。
思路很簡單,關鍵是 JavaScript 動畫的優化。這個效果我去年過聖誕節的時候做過 原理一樓已經講過了 我就直接來個現成的實現把
這個腳本簡單好用 易於實現 如果想看原理 就讀一讀 源代碼把
http://www.schillmania.com/projects/snowstorm/1.在keyword == let+it+snow時,向常規dom中添加一個大小覆蓋viewport的div(層級位置高於原有dom)
2.不停地向該div中添加絕對定位的雪花符號(所有的符號都在不停變動位置)。 3.在上面的容器之上,添加canvas層,並使用canvas的特殊css屬性pointer-events,藉以達到滑鼠穿透事件發生後,令canvas層下面的元素可以使用的目的。 P.S:沒搞清楚怎麼實現整屏霧氣效果的,拋塊磚頭先。&&
&&
&& & & &&
& &&&