今天是節後上班第一天,早上醒來一睜眼,嗯?啊...?什麼...?這是哪?我是誰?上什麼班?css
然鵝,仍是被昨晚特地設置的八個鬧鐘⏰吵醒,冬天早上起牀的難度...想必各位都心有體會 😭,抱着一萬個不情願起牀早早地來到了辦公室,仍是熟悉的環境,仍是熟悉的味道。。。html
還有,熟悉的任務需求😂。前端
今天的第一個任務是寫個登陸頁面,老大給了我一個參(chao)考(xi)案例,你們點擊連接就能看到。嗯,這個登陸頁面確實很簡潔、大方,尤爲是它的氣泡背景,第一反應這應該是張動態圖片,打開審查元素才發現原來這是用代碼寫的,一會兒激起了寶寶的好奇心,因此也試着寫了一個帶氣泡背景的登陸頁面,效果以下:vue
emm...爲何上傳的 gif 動態圖老是這麼小,來補張截圖:框架
(你們能夠自行腦補這些背景氣泡往上升的畫面 😭)less
只需一些簡單的代碼就能夠實現這樣的效果,動畫
首先咱們先定義10個 li 列表標籤,我用的是 vue 框架:spa
<ul class="bg-bubbles"> <li v-for="i in 10" :key="i"></li> </ul>
樣式是用 less 編寫的:code
.bg-bubbles { position: absolute; // 使氣泡背景充滿整個屏幕; top: 0; left: 0; width: 100%; height: 100%; // 若是元素內容超出給定的寬度和高度,overflow 屬性能夠肯定是否顯示滾動條等行爲; overflow: hidden; li { position: absolute; // bottom 的設置是爲了營造出氣泡從頁面底部冒出的效果; bottom: -160px; // 默認的氣泡大小; width: 40px; height: 40px; background-color: rgba(255, 255, 255, 0.15); list-style: none; // 使用自定義動畫使氣泡漸現、上升和翻滾; animation: square 15s infinite; transition-timing-function: linear; // 分別設置每一個氣泡不一樣的位置、大小、透明度和速度,以顯得有層次感; &:nth-child(1) { left: 10%; } &:nth-child(2) { left: 20%; width: 90px; height: 90px; animation-delay: 2s; animation-duration: 7s; } &:nth-child(3) { left: 25%; animation-delay: 4s; } &:nth-child(4) { left: 40%; width: 60px; height: 60px; animation-duration: 8s; background-color: rgba(255, 255, 255, 0.3); } &:nth-child(5) { left: 70%; } &:nth-child(6) { left: 80%; width: 120px; height: 120px; animation-delay: 3s; background-color: rgba(255, 255, 255, 0.2); } &:nth-child(7) { left: 32%; width: 160px; height: 160px; animation-delay: 2s; } &:nth-child(8) { left: 55%; width: 20px; height: 20px; animation-delay: 4s; animation-duration: 15s; } &:nth-child(9) { left: 25%; width: 10px; height: 10px; animation-delay: 2s; animation-duration: 12s; background-color: rgba(255, 255, 255, 0.3); } &:nth-child(10) { left: 85%; width: 160px; height: 160px; animation-delay: 5s; } } // 自定義 square 動畫; @keyframes square { 0% { opacity: 0.5; transform: translateY(0px) rotate(45deg); } 25% { opacity: 0.75; transform: translateY(-400px) rotate(90deg) } 50% { opacity: 1; transform: translateY(-600px) rotate(135deg); } 100% { opacity: 0; transform: translateY(-1000px) rotate(180deg); } } }
補充一下,這裏最外層父容器的背景顏色是:orm
background: linear-gradient(to bottom right, #50A3A2, #53E3A6);
至此,一個氣泡背景圖就完成了。回過頭來看,確實不難,但也越來越讓人感覺到 css 動畫的魅力和強大 ☺️。
若是喜歡這篇文章的話,不妨點個喜歡或關注,這將是我更大的動力。
前端路漫漫,望與君共勉 💪。