效果 效果圖如下 實現思路 dom結構 用兩個嵌套的div容器就可以了,父容器來控製圖標顯示的位置,子容器用來寫烏雲的樣式。而陰影和閃電的樣式都用偽元素就可以了,這些都是在css中定義的。 <div class="container"> <div class="stormy"></div> ...
效果
效果圖如下
實現思路
- 使用box-shadow屬性寫幾個圓,將這些圓錯落的組合在一起,形成雲朵圖案
- after偽元素寫下麵的投影樣式
- before偽元素寫黃色閃電的樣式
dom結構
用兩個嵌套的div容器就可以了,父容器來控製圖標顯示的位置,子容器用來寫烏雲的樣式。而陰影和閃電的樣式都用偽元素就可以了,這些都是在css中定義的。
<div class="container"> <div class="stormy"></div> </div>
css樣式
css按照步驟來實現
1、先寫父容器樣式,順便給整個頁面加個背景色,方便預覽
body{ background: rgba(73,74,95,1); } .container{ width: 170px; height: 170px; position: relative; margin: 250px auto; }
2、寫烏雲的樣式,別忘了烏雲有一個上下移動的動畫效果
.stormy{ width: 50px; height: 50px; position: absolute; left: 80px; top: 70px; margin-left: -60px; background: #222; border-radius: 50%; box-shadow: #222 64px -15px 0 -5px, #222 25px -25px, #222 30px 10px, #222 60px 15px 0 -10px, #222 85px 5px 0 -5px; animation: stormy 5s ease-in-out infinite; } @keyframes stormy{ 50%{ transform: translateY(-20px); } }
3、陰影樣式,同樣是有動畫的
.stormy::after{ content: ''; width: 120px; height: 15px; position: absolute; left: 5px; bottom: -60px; background: #000; border-radius: 50%; opacity: 0.2; transform: scale(0.7); animation: stormy_shadow 5s ease-in-out infinite; } @keyframes stormy_shadow{ 50%{ transform: translateY(20px) scale(1); opacity: 0.05; } }
4、閃電樣式
.stormy::before{ display: block; content: ''; width: 0; height: 0; position: absolute; left: 57px; top: 70px; border-left: 0px solid transparent; border-right: 7px solid transparent; border-top: 43px solid yellow; box-shadow: yellow -7px -32px; transform: rotate(14deg); transform-origin: 50% -60px; animation: stormy_thunder 2s steps(1, end) infinite; } @keyframes stormy_thunder{ 0%{ transform: rotate(20deg); opacity: 1; } 5%{ transform: rotate(-34deg); opacity: 1; } 10%{ transform: rotate(0deg); opacity: 1; } 15%{ transform: rotate(-34deg); opacity: 0; } }
OK,搞定。按著步驟來,你也可以在你的頁面上實現酷炫的電閃雷鳴天氣圖標咯~