陰天,在不開燈的房間,當所有思緒都一點一點沉澱,愛情究竟是精神鴉片,還是世紀末的無聊消遣。 ...
效果
效果如下
實現思路
- 使用box-shadow屬性畫幾個灰色的圓,將這些圓錯落的組合在一起,形成烏雲圖案
- after偽元素寫烏雲下的投影
- 增加動畫
dom結構
用兩個嵌套的div容器,父容器來控製圖標顯示的位置,子容器用來寫烏雲的樣式。
<div class="container"> <div class="cloudy"></div> </div>
css樣式
1、父容器樣式,順便給整個頁面加一個背景色,方便預覽
body{ background: rgba(73, 74, 95, 1); } .container{ width: 170px; height: 170px; position: relative; margin: 250px auto; }
2、烏雲的樣式,烏雲有一個上下移動的動畫。這兒關鍵是box-shadow屬性的使用,白色的話就可以當作多雲的天氣圖標啦~
.cloudy{ width: 50px; height: 50px; position: absolute; top: 70px; left: 80px; margin-left: -60px; background: #ccc; border-radius: 50%; box-shadow: #ccc 65px -10px 0 -5px, #ccc 25px -25px, #ccc 30px 10px, #ccc 60px 15px 0 -10px, #ccc 85px 5px 0 -5px; animation: cloudy 5s ease-in-out infinite; } @keyframes cloudy{ 50%{ transform: translateY(-20px); } }
3、投影的樣式,可以使用after偽元素,別忘了同樣是有移動動畫的
.cloudy::after{ content: ''; width: 120px; height: 15px; position: absolute; bottom: -60px; left: 5px; background: #000; border-radius: 50%; opacity: 0.2; animation: cloudy-shadow 5s ease-in-out infinite; transform: scale(0.7); } @keyframes cloudy-shadow{ 50%{ transform: translateY(20px) scale(1); opacity: 0.05; } }
OK,搞定。按著步驟來,你也可以在你的頁面上實現烏雲的天氣圖標咯~