效果图以下css
用两个嵌套的div容器就能够了,父容器来控制图标显示的位置,子容器用来写乌云的样式。而阴影和闪电的样式都用伪元素就能够了,这些都是在css中定义的。前端
<div class="container"> <div class="stormy"></div> </div>
css按照步骤来实现web
一、先写父容器样式,顺便给整个页面加个背景色,方便预览dom
body{ background: rgba(73,74,95,1); } .container{ width: 170px; height: 170px; position: relative; margin: 250px auto; } 专门创建的学习Q-q-u-n ⑦⑧④-⑦⑧③-零①② 分享学习方法和须要注意的小细节,不停更新最新的教程和学习技巧(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划)
二、写乌云的样式,别忘了乌云有一个上下移动的动画效果ide
.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); } }
三、阴影样式,一样是有动画的工具
.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; } }
四、闪电样式学习
.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,搞定。按着步骤来,你也能够在你的页面上实现酷炫的电闪雷鸣天气图标咯~动画