Preamble
As mentioned in the previous lesson, this article will use what we learned in the previous lesson to make a start up weather page. In fact, this start up page is just my original intention, because the start up page is so boring, thinking about what to paint to make it less boring, then think of the weather display game outside (handy at If you come out of the door and see a big rain alert, you will have an umbrella / raincoat ). But the display was still boring, I thought of adding a weather animation, so there was another song, as a prerequisite for this article.
My basic way is to use css + jquery / ajax, get the weather data with ajax and then based on the corresponding weather animation result. Mostly will use the replace HTML method after receiving the returned data.
In addition, as you can see, I also added some miscellaneous things like date and time, with a good link to be mail and drive, people can add or remove according to their needs, I’ll leave the demo link and reference sources at the end of the article.
The work consists of the following main parts:
- Change the start up default chrome page to mine
- Create skins and prepare weather effects
- Get weather information via API
- Processing received information and put on the interface, active corresponding information effects
Replace Start up page
The first of course is to make instead of displaying the boring start up page, chrome will show its colorful page. First of all, create a Project folder with an html
file.
Next, to be able to replace the chrome start up, an additional manifest.json
file is needed. The content of this file will be as follows:
1 2 3 4 5 6 7 8 9 | <span class="token punctuation">{</span> <span class="token property">"name"</span> <span class="token operator">:</span> <span class="token string">"Empty new tab page"</span> <span class="token punctuation">,</span> // tên cho app <span class="token property">"description"</span> <span class="token operator">:</span> <span class="token string">"Override the new tab page with an empty page, for users who don't like the original or custom new tab pages"</span> <span class="token punctuation">,</span> <span class="token property">"version"</span> <span class="token operator">:</span> <span class="token string">"1.0"</span> <span class="token punctuation">,</span> <span class="token property">"incognito"</span> <span class="token operator">:</span> <span class="token string">"split"</span> <span class="token punctuation">,</span> <span class="token property">"chrome_url_overrides"</span> <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">"newtab"</span> <span class="token operator">:</span> <span class="token string">"newtab.html"</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> //tên file mà ứng dụng sẽ chạy vào đầu tiên <span class="token property">"manifest_version"</span> <span class="token operator">:</span> <span class="token number">2</span> <span class="token punctuation">}</span> |
The next step is to enable the application on the Chrome extension. Access the link: chrome://extensions/
to go to the list page to turn on / off the extension. However, my application has not been seen in this yet, so I need to ‘load’ it into the list already.
First, you need to turn on Developer Mode to be able to manually download the extensions outside the chrome store (specifically, to use the extension I built on the local).
Then you can click on ‘Load unpacked’ to get your PJ listed
And every last step is active PJ extension it up.
Now you can open a new tab, and see that instead of the image you used to see every day, now the clean white newtab looks even more boring =)). If you write a few words in the html file, it will display the new tab just now . But that means it is already possible to replace the start up page.
Little nice drawing
Once you have activated your extension, now do 2 things:
- Determine what function you want on it
- Draw your page well. Because after drawing the page, you can do steps like replace HTML, replace animation according to your conditions.
Like my site, I want to display the date and time, the weather with effects, and even some links I visit often without wanting to type the link anymore (actually, I’m used to clicking those on the old start page, now open). See missing, and lazy to type the link ). Well, the sun and my background also change over time
Then, after finding that beautiful mountain range (stealing an image from https://offset.earth/artilleryio ), drawing and determining where to display each and all the animations, I was able to Know what class / item to replace the value in.
Although I have used weather effects, I still use more weather icons, I use this set of icons: https://www.iconfinder.com/iconsets/weather-color-2
By the way, I define these images to always call the icon easily:
1 2 3 4 5 6 7 | <span class="token keyword">var</span> cloudy <span class="token operator">=</span> <span class="token string">'<img src="images/cloudy.png">'</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> foggy <span class="token operator">=</span> <span class="token string">'<img src="images/foggy.png">'</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> heavy_rain <span class="token operator">=</span> <span class="token string">'<img src="images/heavy_rain.png">'</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> light_rain <span class="token operator">=</span> <span class="token string">'<img src="images/light_rain.png">'</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> light_sun <span class="token operator">=</span> <span class="token string">'<img src="images/light_sun.png">'</span> <span class="token punctuation">;</span> <span class="token operator">...</span> |
When starting to write js, I note a bit that with the start up page, it will not be possible to get js written in the same html file, to add JS, you must write your own js file and declare it in your index.html
file. Please
Easy to do in advance: Define effects and use
Effects corresponding time
As mentioned above, first I want to display the time and then change the background color and position of the sun. So I choose some background color patterns for each time: early morning, full morning, noon, afternoon, evening, evening. As for the sun, I’ll move it halfway through the center bottom
of the screen to be the center bottom
. The color problem is simple, apply background-color
by the hour to finish. As for the position of the sun, I apply this to position the sun, of course it also depends on the time. Here I define changing the background color will be at the same time with changing the sun position => determine the position corresponding to the time of changing the background color above.
Corresponding weather effect
Next, I will rely on the weather to get an animated rain / snow / thunder … to make the page more vivid. To do this, you need to prepare some corresponding effects from the previous lesson : light rain (using only 1 rain layer), heavy rain (use 1 – 2 more rain layers with faster falling speed, bigger raindrops to look like heavy rain); it’s windy (I’m lazy to do it yet); thunder (remember to put the lightning layer on the bottom, just above the background color layer); snow (in Hanoi there is no snow but in Sapa you can have snow ); fog and thick fog (2 pieces are common, only different from blur and opacity to have different density only)
So something like this will look like HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> js/jquery-3.4.1.min.js <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> body</span> <span class="token attr-name">background</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> /* khi nào lấy thời gian thì if else đổi màu cho thẻ này */ <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> lightning <span class="token punctuation">"</span></span> <span class="token style-attr language-css"><span class="token attr-name"> <span class="token attr-name">style</span></span> <span class="token punctuation">="</span> <span class="token attr-value"><span class="token property">position</span> <span class="token punctuation">:</span> fixed</span> <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> img</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> ảnh_chớp.png <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> container <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> sun <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> /* position sẽ được thay đổi theo thời gian ... <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> fog <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> /* sương */ <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> rain <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> layer-1 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> /* lớp mưa nhỏ, speed ko cần nhanh quá */ <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> layer-2 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> /* lớp mưa to, speed rơi nhanh, khi bật nó lên thì chỉnh width các hạt mưa lớn hơn */ <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> ... <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> div</span> <span class="token attr-name">class</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> snow <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> div</span> <span class="token punctuation">></span></span> /* cũng có thể set tuyết nhiều hay ít tương tự như mưa */ <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> body</span> <span class="token punctuation">></span></span> |
Of course initially all the other weather div
will set display: none
. Corresponding to the weather retrieved will choose which display: block
to run the effect.
Handling date and time
It’s probably too simple to get the current date and time, but for the full article, I still instruct lazy people to find a way:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <span class="token operator">...</span> <span class="token keyword">var</span> today <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Date</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Lấy ra ngày giờ hiện tại</span> <span class="token keyword">var</span> weekDay <span class="token operator">=</span> today <span class="token punctuation">.</span> <span class="token function">getDay</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Xem hôm nay là thứ mấy, kết quả trả về là từ 0 -> 6. Sử dụng switch case in ra thứ tương ứng:</span> <span class="token keyword">switch</span> <span class="token punctuation">(</span> weekDay <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token number">0</span> <span class="token punctuation">:</span> weekDay <span class="token operator">=</span> <span class="token string">'Sun'</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">1</span> <span class="token punctuation">:</span> weekDay <span class="token operator">=</span> <span class="token string">'Mon'</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token operator">...</span> <span class="token punctuation">}</span> <span class="token comment">// In ra chuỗi ngày tháng dạng: DD-MM-YYYY:</span> <span class="token keyword">var</span> date <span class="token operator">=</span> weekDay <span class="token operator">+</span> String <span class="token punctuation">.</span> <span class="token function">fromCharCode</span> <span class="token punctuation">(</span> <span class="token number">160</span> <span class="token punctuation">)</span> <span class="token operator">+</span> String <span class="token punctuation">.</span> <span class="token function">fromCharCode</span> <span class="token punctuation">(</span> <span class="token number">160</span> <span class="token punctuation">)</span> <span class="token operator">+</span> String <span class="token punctuation">.</span> <span class="token function">fromCharCode</span> <span class="token punctuation">(</span> <span class="token number">160</span> <span class="token punctuation">)</span> <span class="token operator">+</span> today <span class="token punctuation">.</span> <span class="token function">getDate</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'-'</span> <span class="token operator">+</span> <span class="token punctuation">(</span> today <span class="token punctuation">.</span> <span class="token function">getMonth</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span> <span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'-'</span> <span class="token operator">+</span> today <span class="token punctuation">.</span> <span class="token function">getFullYear</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// Lấy giờ phút:</span> <span class="token keyword">var</span> hour <span class="token operator">=</span> today <span class="token punctuation">.</span> <span class="token function">getHours</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> time <span class="token operator">=</span> hour <span class="token operator">+</span> <span class="token string">":"</span> <span class="token operator">+</span> today <span class="token punctuation">.</span> <span class="token function">getMinutes</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// In thế vào vị trí tương ứng trên màn:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".date"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">text</span> <span class="token punctuation">(</span> date <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".time"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">text</span> <span class="token punctuation">(</span> time <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
After finishing the date, time has time, based on that and processing the background and the sun, everyone can choose the time markers, or skip this one as well:
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 | <span class="token operator">...</span> <span class="token keyword">var</span> bgColor <span class="token operator">=</span> <span class="token string">'#feefc7'</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> hour <span class="token operator">></span> <span class="token number">5</span> <span class="token operator">&&</span> today <span class="token punctuation">.</span> <span class="token function">getHours</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator"><=</span> <span class="token number">7</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> bgColor <span class="token operator">=</span> <span class="token string">'#efa18b'</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sun"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"transform"</span> <span class="token punctuation">,</span> <span class="token string">'rotate(-150deg) translate(40vw) rotate(-150deg)'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> hour <span class="token operator"><=</span> <span class="token number">10</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> bgColor <span class="token operator">=</span> <span class="token string">'#e3c498'</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sun"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"transform"</span> <span class="token punctuation">,</span> <span class="token string">'rotate(-120deg) translate(40vw) rotate(-120deg)'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> hour <span class="token operator"><=</span> <span class="token number">14</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> bgColor <span class="token operator">=</span> <span class="token string">'#f6e9d2'</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sun"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"transform"</span> <span class="token punctuation">,</span> <span class="token string">'rotate(-90deg) translate(40vw) rotate(-90deg)'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> hour <span class="token operator"><=</span> <span class="token number">16</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> bgColor <span class="token operator">=</span> <span class="token string">'#e3c498'</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sun"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"transform"</span> <span class="token punctuation">,</span> <span class="token string">'rotate(-60deg) translate(40vw) rotate(-60deg)'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"left"</span> <span class="token punctuation">,</span> <span class="token string">'10%'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> hour <span class="token operator"><=</span> <span class="token number">17</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> bgColor <span class="token operator">=</span> <span class="token string">'#efa18b'</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"left"</span> <span class="token punctuation">,</span> <span class="token string">'10%'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sun"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"transform"</span> <span class="token punctuation">,</span> <span class="token string">'rotate(-30deg) translate(40vw) rotate(-30deg)'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> today <span class="token punctuation">.</span> <span class="token function">getHours</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">>=</span> <span class="token number">18</span> <span class="token operator">||</span> today <span class="token punctuation">.</span> <span class="token function">getHours</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator"><=</span> <span class="token number">5</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> bgColor <span class="token operator">=</span> <span class="token string">'#010a3d'</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sun"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"transform"</span> <span class="token punctuation">,</span> <span class="token string">'rotate(-90deg) translate(40vw) rotate(-90deg)'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sun"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"background-color"</span> <span class="token punctuation">,</span> <span class="token string">'#e6dde4'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// buổi tối thì mặt trời đổi màu thành mặt trăng :D</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".date"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"color"</span> <span class="token punctuation">,</span> <span class="token string">'#e6dde4'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".time"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"color"</span> <span class="token punctuation">,</span> <span class="token string">'#e6dde4'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".container"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"background-color"</span> <span class="token punctuation">,</span> bgColor <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
A little reminder: The above code I wrote is as explicit as possible, so it looks verbose and duplicated, so to optimize the code, you can refer to this article: Reduce if else to clean code than
Get weather information from API
API source
After searching some sources for the weather forecast API, I found it almost impossible to use. Most of the sources that page types: “The free weather forecast API” offers “free” type for several hundred requests per day, then will charge for the next request. Which I use, for Chrome start up page, it is very expensive to request a lot of opening days for tabs, so using the free style for the first requests, charging the following requests is not good.
And I chose openweathermap , which allows up to 60 requests per minute, with personal use that’s enough, unless you want to challenge the click speed of new pages. . As far as I read, OpenWeatherMap has about 11 different APIs for us to use. All you need to do is register your account to get API keys only.
Open weather map
To register for an account, visit this link: https://home.openweathermap.org/users/sign_up and register your account with your email. Then will be sent a confirmation email to the email you registered, click the verify link to be.
After registering successfully, you only need to get API key to use it! On the home
screen, select the API key tab to get your key:
Now that we have the API key to use, temporarily assign the key chain as: 122333444455555abcdef
.
Connect to API
Read the API
Depending on the purpose of use, we will need different APIs: weather of the day, weekday, … You can go to https://openweathermap.org/api to refer to the doc and Choose to suit the purpose. I will take an example with ‘Current weather forecast’ (because the main purpose is to check the current weather so that the start up page animate it) )
According to doc, the API call will look like this:
1 2 3 4 | api.openweathermap.org/data/2.5/weather?q={city name}&appid={your api key} api.openweathermap.org/data/2.5/weather?q={city name},{state}&appid={your api key} api.openweathermap.org/data/2.5/weather?q={city name},{state},{country code}&appid={your api key} |
Here city name if not sure key city name then go to https://openweathermap.org/city to search city name. And the appid
is the API key just now: 122333444455555abcdef
Also can get by city ID, zip code … but that way is not as simple as the city name, so whatever is easy to use only
OK, now try to access the API. You should see data that looks like this:
In which attention should be paid:
dt
is the date and time of each forecast item (For example, at 9am on 12/2/2020, the weather in Hanoi is like that). This time is in unix format, so if you want to convert to normal time, you can use themoment.js
library:
1 2 3 | weather <span class="token punctuation">.</span> date <span class="token operator">=</span> moment <span class="token punctuation">.</span> <span class="token function">unix</span> <span class="token punctuation">(</span> data <span class="token punctuation">.</span> dt <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">format</span> <span class="token punctuation">(</span> <span class="token string">"MM/DD/YYYY"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> weather <span class="token punctuation">.</span> time <span class="token operator">=</span> moment <span class="token punctuation">.</span> <span class="token function">unix</span> <span class="token punctuation">(</span> data <span class="token punctuation">.</span> dt <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">format</span> <span class="token punctuation">(</span> <span class="token string">"HH:MM"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
weather.description
is the weather information we care aboutname
: The name of the city to get the weather. There issys.country
again as the namemain
contains specific information about the weather: temperature (Fahrenheit scale), How many degrees it feels, the highest heat, the lowest heat, …
Oh, but my Vietnamese people use Fahrenheit temperature (Fahrenheit), it is not used to it. To convert to Celsius is also simple, you subtract 30 minus F and divide 2 by the Celsius (F = (C x 2) + 30 according to the document ). Or simply add &units=metric
at the end of the request API =))
Also at the bottom of the API is the location information for the weather:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | id <span class="token operator">:</span> <span class="token number">1581130</span> // đây là cityID nói ở trên này clouds <span class="token operator">:</span> <span class="token punctuation">{</span> all <span class="token operator">:</span> <span class="token number">20</span> <span class="token punctuation">}</span> //cái này là mật độ mây thì phải name <span class="token operator">:</span> <span class="token string">"Hanoi"</span> // tên thành phố lấy thời tiết sys <span class="token operator">:</span> country <span class="token operator">:</span> <span class="token string">"VN"</span> // quốc gia id <span class="token operator">:</span> <span class="token number">9308</span> // id quốc gia sunrise <span class="token operator">:</span> <span class="token number">1581463753</span> // giờ mặt trời mọc - cũng theo time unix sunset <span class="token operator">:</span> <span class="token number">1581504762</span> // giờ mặt trời lặn timezone <span class="token operator">:</span> <span class="token number">25200</span> visibility <span class="token operator">:</span> <span class="token number">2300</span> weather <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> … <span class="token punctuation">}</span> <span class="token punctuation">]</span> wind <span class="token operator">:</span> deg <span class="token operator">:</span> <span class="token number">80</span> // hướng gió speed <span class="token operator">:</span> <span class="token number">3.6</span> // tốc độ gió |
Create a request to retrieve data with ajax
I used a very basic way to get
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token operator">...</span> $ <span class="token punctuation">.</span> <span class="token function">ajax</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> type <span class="token punctuation">:</span> <span class="token string">"GET"</span> <span class="token punctuation">,</span> dataType <span class="token punctuation">:</span> <span class="token string">"json"</span> <span class="token punctuation">,</span> data <span class="token punctuation">:</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> name <span class="token punctuation">}</span> <span class="token punctuation">,</span> url <span class="token punctuation">:</span> <span class="token string">"http://api.openweathermap.org/data/2.5/weather?q=hanoi&appid=122333444455555abcdef&units=metric"</span> <span class="token punctuation">,</span> success <span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> data <span class="token punctuation">)</span> <span class="token punctuation">{</span> console <span class="token punctuation">.</span> <span class="token function">log</span> <span class="token punctuation">(</span> data <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
And then open it up and the thing you need is pulled out:
Data processing to be ready for use
Leave it as it is, the insert is not very convenient, so I modified it a bit for ease of use:
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 | <span class="token keyword">var</span> city <span class="token operator">=</span> <span class="token string">''</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> weather <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> $ <span class="token punctuation">.</span> <span class="token function">ajax</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> type <span class="token punctuation">:</span> <span class="token string">"GET"</span> <span class="token punctuation">,</span> dataType <span class="token punctuation">:</span> <span class="token string">"json"</span> <span class="token punctuation">,</span> data <span class="token punctuation">:</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> url <span class="token punctuation">:</span> <span class="token string">"http://api.openweathermap.org/data/2.5/forecast?q=hanoi&appid=8abd04009b0b784352dd637c0ecb8668&units=metric"</span> <span class="token punctuation">,</span> success <span class="token punctuation">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span> data <span class="token punctuation">)</span> <span class="token punctuation">{</span> weather <span class="token punctuation">.</span> date <span class="token operator">=</span> moment <span class="token punctuation">.</span> <span class="token function">unix</span> <span class="token punctuation">(</span> data <span class="token punctuation">.</span> dt <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">format</span> <span class="token punctuation">(</span> <span class="token string">"MM/DD/YYYY"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> weather <span class="token punctuation">.</span> time <span class="token operator">=</span> moment <span class="token punctuation">.</span> <span class="token function">unix</span> <span class="token punctuation">(</span> data <span class="token punctuation">.</span> dt <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">format</span> <span class="token punctuation">(</span> <span class="token string">"HH:MM"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> weather <span class="token punctuation">.</span> city <span class="token operator">=</span> data <span class="token punctuation">.</span> name <span class="token punctuation">;</span> weather <span class="token punctuation">.</span> weather_id <span class="token operator">=</span> data <span class="token punctuation">.</span> weather <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">.</span> id <span class="token punctuation">;</span> <span class="token function">checkWeather</span> <span class="token punctuation">(</span> weather <span class="token punctuation">.</span> weather_id <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">//hàm này sẽ được giải thích ở dưới, nó xử lý hiện tượng thời tiết</span> weather <span class="token punctuation">.</span> temp <span class="token operator">=</span> data <span class="token punctuation">.</span> main <span class="token punctuation">.</span> temp <span class="token punctuation">;</span> weather <span class="token punctuation">.</span> maxTemp <span class="token operator">=</span> data <span class="token punctuation">.</span> main <span class="token punctuation">.</span> temp_max <span class="token punctuation">;</span> weather <span class="token punctuation">.</span> minTemp <span class="token operator">=</span> data <span class="token punctuation">.</span> main <span class="token punctuation">.</span> temp_min <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather .city"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">html</span> <span class="token punctuation">(</span> weather <span class="token punctuation">.</span> city <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather .curr-temp span"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">html</span> <span class="token punctuation">(</span> weather <span class="token punctuation">.</span> temp <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather .description"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">html</span> <span class="token punctuation">(</span> weather <span class="token punctuation">.</span> weather <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather .feel"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">html</span> <span class="token punctuation">(</span> weather <span class="token punctuation">.</span> feels_like <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather .max a"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">html</span> <span class="token punctuation">(</span> weather <span class="token punctuation">.</span> maxTemp <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather .min a"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">html</span> <span class="token punctuation">(</span> weather <span class="token punctuation">.</span> minTemp <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
According to the above, I only get data as date, time, current temperature, maximum temperature, min temperature and current weather only. So there is already enough information.
Assign weather information
The required information, the corresponding effects have been prepared, is now incorporated. For the information: temperature, city name, just replace directly as the date and time information above is done: $(".weather .curr-temp span").html(weather.temp);
. However, the status of the weather needs a bit of handling.
In Openweathermap, they define many weather conditions (item data.weather[0].description
): cloud clusters, little cloud, light drizzle, drizzle, light rain, cold rain, pouring rain, .. .. so it is necessary to group the statuses returned, with which groups to handle the effect, or can add the corresponding weather icons as well. To view all the weather conditions and choose the appropriate group, you can go to this link: https://openweathermap.org/weather-conditions
So I have 1 general map conditions corresponding as follows:
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 | <span class="token keyword">const</span> actions <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Map</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token number">200</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> thunder <span class="token punctuation">,</span> <span class="token string">'add_thunder_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">201</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> thunder <span class="token punctuation">,</span> <span class="token string">'add_thunder_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">202</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> thunder <span class="token punctuation">,</span> <span class="token string">'add_thunder_heavy_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">300</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> light_rain <span class="token punctuation">,</span> <span class="token string">'add_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">301</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> light_rain <span class="token punctuation">,</span> <span class="token string">'add_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token operator">...</span> <span class="token punctuation">[</span> <span class="token number">500</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> light_rain <span class="token punctuation">,</span> <span class="token string">'add_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">501</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> moderate_rain <span class="token punctuation">,</span> <span class="token string">'add_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">502</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> heavy_rain <span class="token punctuation">,</span> <span class="token string">'increase_rain_width'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">503</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> heavy_rain <span class="token punctuation">,</span> <span class="token string">'increase_rain_width'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token operator">...</span> <span class="token punctuation">[</span> <span class="token number">701</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> windy <span class="token punctuation">,</span> <span class="token string">'add_mist'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">702</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> windy <span class="token punctuation">,</span> <span class="token string">'add_mist'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">703</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> windy <span class="token punctuation">,</span> <span class="token string">'add_mist'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token operator">...</span> <span class="token punctuation">[</span> <span class="token number">771</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> hail_rain <span class="token punctuation">,</span> <span class="token string">'add_headvy_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">781</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> tornado <span class="token punctuation">,</span> <span class="token string">'add_headvy_rain'</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">800</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> sunny <span class="token punctuation">,</span> <span class="token string">''</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">801</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> light_sun <span class="token punctuation">,</span> <span class="token string">''</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">802</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> cloudy <span class="token punctuation">,</span> <span class="token string">''</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">803</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> cloudy <span class="token punctuation">,</span> <span class="token string">''</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">804</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> cloudy <span class="token punctuation">,</span> <span class="token string">''</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'default'</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> sunny <span class="token punctuation">,</span> <span class="token string">''</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
Sort of the map above is like this:
1 2 | [weather_id, [icon_image_variable, weather_action_for_screen] |
Inside:
- weather_id: need not explain, is the id taken from API via ajax above
- icon_image_variable: varisable contains the image icon defined above: Eg
var windy = '<img src="images/windy.png">';
- weather_action_for_screen: choose the effect of rain or snow, blah blah … for the screen
The above code is quite long and has not been “beautiful”, I do not know how to handle it so neatly so, you can optimize it.
checkWeather (weather_id)
This function will work select icons and effects according to weather_id.
1 2 3 4 5 6 | <span class="token keyword">function</span> <span class="token function">checkWeather</span> <span class="token punctuation">(</span> status <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">let</span> action <span class="token operator">=</span> actions <span class="token punctuation">.</span> <span class="token keyword">get</span> <span class="token punctuation">(</span> status <span class="token punctuation">)</span> <span class="token operator">||</span> actions <span class="token punctuation">.</span> <span class="token keyword">get</span> <span class="token punctuation">(</span> <span class="token string">'default'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">icon</span> <span class="token punctuation">(</span> action <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">doWeather</span> <span class="token punctuation">(</span> action <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Here actions.get(status)
will run into the map actions above, based on status to match the weather_id in the map and retrieve the corresponding icon + weather action. The return value will then be
1 2 3 4 | <span class="token function">Array</span> <span class="token punctuation">(</span> <span class="token number">2</span> <span class="token punctuation">)</span> <span class="token number">0</span> <span class="token punctuation">:</span> <span class="token string">"<img src="</span> images <span class="token operator">/</span> windy <span class="token punctuation">.</span> png <span class="token string">">"</span> <span class="token number">1</span> <span class="token punctuation">:</span> <span class="token string">"add_mist"</span> |
So the icon (action [0]) function is to insert the icon into the location of the weather icon:
1 2 3 4 | <span class="token keyword">function</span> <span class="token function">icon</span> <span class="token punctuation">(</span> icon_name <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".weather .icon"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">html</span> <span class="token punctuation">(</span> icon_name <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
and activate the corresponding effect:
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 | <span class="token keyword">function</span> <span class="token function">doWeather</span> <span class="token punctuation">(</span> action <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">switch</span> <span class="token punctuation">(</span> action <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token string">'add_thunder_rain'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".lightning"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".layer-1 .rain-drop"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token string">'add_thunder_heavy_rain'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".thunder"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".rain-drop"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".rain-drop"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"width"</span> <span class="token punctuation">,</span> <span class="token string">'2px'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token string">'add_thunder'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".thunder"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token string">'add_rain'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".layer-1 .rain-drop"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token string">'increase_rain'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".rain-drop"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".rain-drop"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"width"</span> <span class="token punctuation">,</span> <span class="token string">'2px'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token string">'add_snow'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".snowflakes .snowflake"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token string">'add_mist'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".fog"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token string">'add_fog'</span> <span class="token punctuation">:</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".fog"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".fog"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"filter"</span> <span class="token punctuation">,</span> <span class="token string">'blur(20px)'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">default</span> <span class="token punctuation">:</span> <span class="token comment">// default mình cho hoa anh đào rơi cho đỡ chán, làm y hệt tuyết :v</span> <span class="token function">$</span> <span class="token punctuation">(</span> <span class="token string">".sakuras .snowflake"</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">css</span> <span class="token punctuation">(</span> <span class="token string">"display"</span> <span class="token punctuation">,</span> <span class="token string">'block'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Conclusion
People can watch the code directly at https://github.com/BunnyPi04/weather-start-up-page if you follow the above tutorial but too vague offline.
And here is the demo page: https://bunnypi04.github.io/weather-start-up-page/