這篇文章帶給大家的內容是關於CSS 、JS實現浪漫流星雨動畫,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。效果如下:
HTML
由於節點很多,並且我想盡量做得逼真有趣有點,還給節點加了隨機位置。所以節點的輸出都是用JS控制的,HTML這邊只寫了幾個父元素盒子,加上對應的ID名和類別類名,結構相對簡單。
CSS
CSS部分的困難就是流星的樣式和用圈圈畫雲層,然後將雲層堆疊出立體效果。 【推薦閱讀:CSS堆疊上下文是什麼?有什麼作用? 】
先說流星的樣式:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
先提取了公共樣式,加入定位屬性;
然後在星後通過後偽類別添加流星,以邊界特性畫:
1)模型繪製:border-width的順序為四邊top,right,bottom,left,同理border-color的順序也為四邊top,right,bottom ,left。這樣將border-width與border-color一一對應後,就能看出2px的是流星的寬度,80px是流星的長度,而0像素流星就是尾巴的這樣就形成了一個。頭部2px的寬,尾部0像素,長度80px的流星模型 ;
2)稍微逼真:通過邊界半徑?給流星的頭部增加個圓角,讓它看起來更逼真最後透過roteta旋轉一個角度,讓它看起來像是往下掉;
3)增加閃光:透過箱陰影給流星增加一點光暈,讓它看起來有閃光的效果;
透過以上3步,一個流星就畫好了。
然後是畫雲:
因為雲的程式碼比較長,這裡就不貼出來了方法無非是透過一個一個的圓,相互疊加覆蓋,完成一個雲朵的形狀。
完成一個雲層之後,copy一個,然後多個雲層通過rotate,opacity,left定位等,做出一個漸隱疊加的立體效果;
JS
JS部分以流星舉例說明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
這裡邊用到了我自己封裝的兩個方法,一個是基於requestAnimationFrame的requestAnimation,以及基於appendChild的addChild。
為了達成星星位置隨機的效果,透過計時器的setInterval的不停插入與刪除流星:
首先,每次加入2個流星到頁面,但是計時器的間隔時間小於流星的動畫時間,這樣就能保證頁面中的流星的數量不是固定值,但肯定是大於2的。不然一次2個流星略顯冷清;
然後,透過對循環(也可以用為式,換的,都行。對於-的最簡單)給每個新添加到頁面中的流星一個隨機的位置(頂部,左側),隨機的大小(規模),隨機的動畫執行時間(計時器);
最後,在用於循環中,給每個新添加到頁面中的流星加上動畫,並透過回呼函數在執行動畫後刪除節點。這裡要注意的是,要動畫分成兩個階段(出現與消失,主要是opacity控制)。另外我這裡的處理,每個流星都移動相同的距離300px,這個距離我覺得也可以用隨機數控制,但我犯了個懶,就沒有做。
附上程式碼:
HTML:
1 2 3 4 5 6 7 8 9 10 11 |
|
css:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
|
JS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
|
以上就是對CSS 、JS實現浪漫流星雨動畫的完整介紹,如果您想了解更多有關CSS教程,請關注PHP中文網。
以上是CSS 、JS實現浪漫流星雨動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!