css3+html实现傍晚日落下的风车转动动画
最终效果如上图,主要是利用html绘制插画的结构体,然后css3的transform和背景渐变linear-gradient去实现动画的平滑过渡
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>css3+html实现傍晚日落下的风车转动动画</title> </head> <body> <div class="canvas"> <div class="stars"> <div class="star star-1 opacity-quarter"></div> <div class="star star-2 opacity-quarter"></div> <div class="star star-3 opacity-half"></div> <div class="star star-4 opacity-half"></div> <div class="star star-5 opacity-half"></div> <div class="star star-6 opacity-half"></div> <div class="star star-7"></div> <div class="star star-8 opacity-quarter"></div> <div class="star star-9 opacity-quarter"></div> <div class="star star-10"></div> <div class="star star-11"></div> <div class="star star-12 opacity-half"></div> <div class="star star-13 opacity-quarter"></div> <div class="star star-14 opacity-quarter"></div> <div class="star star-15"></div> <div class="star star-16 opacity-half"></div> <div class="star star-17"></div> <div class="star star-18 opacity-half"></div> <div class="star star-19"></div> <div class="star star-20"></div> <div class="star star-21"></div> <div class="star star-22 opacity-half"></div> <div class="star star-23 opacity-quarter"></div> <div class="star star-24 opacity-quarter"></div> <div class="star star-25 opacity-half"></div> <div class="star star-26"></div> <div class="star star-27 opacity-half"></div> <div class="star star-28 opacity-quarter"></div> <div class="star star-29"></div> <div class="star star-30 opacity-half"></div> </div> <div class="shooting-star"></div> <div class="sun"></div> <div class="forest"> <div class="tree tree1"></div> <div class="tree tree2"></div> <div class="tree tree3"></div> <div class="tree tree4"></div> <div class="tree tree5"></div> <div class="tree tree6"></div> <div class="tree tree7"></div> <div class="tree tree8"></div> <div class="tree tree9"></div> <div class="tree tree10"></div> <div class="tree tree11"></div> <div class="tree tree12"></div> <div class="tree tree13"></div> <div class="tree tree14"></div> </div> <div class="house"> <div class="windmill"> <div class="mill-fan"> <div class="fan-wing fan-1"> <div class="fan-comb"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </div> <div class="fan-wing fan-2"> <div class="fan-comb"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </div> <div class="fan-wing fan-3"> <div class="fan-comb"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </div> <div class="fan-wing fan-4"> <div class="fan-comb"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </div> </div> </div> <div class="roof"></div> <div class="floors"> <div class="light"></div> <div class="door"></div> </div> </div> </div> </body> </html>
样式部分代码如下:
* { margin: 0; padding: 0; box-sizing: border-box; } body { background: #292f4c; } .canvas { height: 340px; width: 340px; border: 10px solid #3b436d; border-radius: 50%; margin: 10% auto; position: relative; background: linear-gradient(to bottom, #4d4d83 0%, #c76961 246px, #292f4c 0%); overflow: hidden; } .sun { position: absolute; height: 112px; width: 112px; background: linear-gradient(to bottom, #ffc673 0%, #ff653c 100%); left: 36px; top: 70px; border-radius: 50%; } .forest { bottom: -8px; position: absolute; } .tree { width: 0; height: 0; border-left: 12px solid transparent; border-right: 12px solid transparent; border-bottom: 48px solid #292f4c; position: absolute; bottom: 80px; } .tree.tree1 { left: 22px; bottom: 70px; } .tree.tree2 { left: 42px; } .tree.tree3 { bottom: 62px; left: 60px; } .tree.tree4 { left: 74px; bottom: 64px; } .tree.tree5 { left: 90px; bottom: 72px; } .tree.tree6 { left: 120px; } .tree.tree7 { left: 140px; } .tree.tree8 { left: 160px; } .tree.tree9 { left: 190px; } .tree.tree10 { left: 205px; bottom: 60px; } .tree.tree11 { left: 220px; bottom: 70px; } .tree.tree12 { bottom: 80px; left: 240px; } .tree.tree13 { left: 260px; bottom: 70px; } .tree.tree14 { left: 280px; bottom: 60px; } .floors { height: 100px; width: 74px; background: #292f4c; left: 10%; position: absolute; bottom: 80px; } .floors:before { position: absolute; content: ""; width: 0; height: 0; border-left: 11px solid transparent; border-right: 0px solid transparent; border-bottom: 100px solid #292f4c; left: -11px; } .floors:after { position: absolute; content: ""; width: 0; height: 0; border-left: 0px solid transparent; border-right: 11px solid transparent; border-bottom: 100px solid #292f4c; right: -11px; bottom: 0; } .roof { border-left: 48px solid transparent; border-right: 48px solid transparent; border-bottom: 48px solid #292f4c; position: absolute; width: 0; height: 0; bottom: 180px; left: -10px; } .house { position: absolute; bottom: -10px; left: 122px; } .door { height: 32px; width: 24px; background: linear-gradient(to bottom, #ffed60 0%, #ffb73c 100%); border-radius: 12px 12px 0 0; position: absolute; bottom: 0; left: 25px; box-shadow: 0 0px 15px #ffed60; } .light { height: 12px; width: 12px; background: linear-gradient(to bottom, #ffed60 0%, #ffb73c 100%); border-radius: 50%; position: absolute; top: 10px; left: 30px; } .light:before { content: ""; height: 36px; width: 12px; background: linear-gradient(to bottom, #ffed6000 0%, #ffb73c 50%, #ffed6000 100%); position: absolute; top: -12px; opacity: 0.3; } .light:after { content: ""; height: 36px; width: 12px; background: linear-gradient(to bottom, #ffed6000 0%, #ffb73c 50%, #ffed6000 100%); position: absolute; top: -12px; opacity: 0.3; transform: rotate(90deg); } .fan-wing { width: 100px; height: 24px; border-bottom: 8px solid #292f4c; position: relative; left: 0; left: 0; } .fan-wing .fan-comb { width: 64px; height: inherit; border: 4px solid #292f4c; } .fan-wing .fan-comb ul li { border-right: 4px solid #292f4c; display: inline; margin-left: 3.4px; } .fan-wing.fan-1 { left: 0; } .fan-wing.fan-2 { transform: rotate(90deg); transform-origin: 112px 12px; } .fan-wing.fan-3 { transform: rotate(180deg); transform-origin: 100px 0px; } .fan-wing.fan-4 { transform: rotate(270deg); transform-origin: 64px -12px; } .windmill { position: absolute; top: -216px; z-index: 8; left: -65px; animation: rotatemill 10s infinite linear; transform-origin: 105px 25px; } @keyframes rotatemill { 100% { transform: rotate(360deg); } } .star { background: white; height: 2px; width: 2px; position: absolute; left: 100px; top: 20px; border-radius: 25%; opacity: 0.5; } .star.star-1 { left: 150px; } .star.star-2 { left: 170px; top: 60px; } .star.star-3 { left: 130px; top: 80px; } .star.star-4 { left: 90px; top: 80px; } .star.star-5 { left: 179px; top: 90px; } .star.star-6 { left: 136px; top: 97px; } .star.star-7 { left: 150px; top: 97px; } .star.star-8 { left: 200px; top: 95px; } .star.star-9 { left: 260px; top: 95px; } .star.star-10 { left: 37px; top: 100px; } .star.star-11 { left: 35px; top: 80px; } .star.star-12 { left: 25px; top: 90px; } .star.star-13 { left: 25px; top: 135px; } .star.star-14 { left: 25px; top: 118px; } .star.star-15 { left: 10px; top: 123px; } .star.star-16 { left: 135px; top: 23px; } .star.star-17 { left: 140px; top: 10px; } .star.star-18 { left: 200px; top: 36px; } .star.star-19 { left: 215px; top: 37px; } .star.star-20 { left: 219px; top: 30px; } .star.star-21 { left: 230px; top: 80px; } .star.star-22 { left: 230px; top: 150px; } .star.star-23 { left: 226px; top: 158px; } .star.star-24 { left: 250px; top: 136px; } .star.star-25 { left: 273px; top: 123px; } .star.star-26 { left: 298px; top: 93px; } .star.star-27 { left: 296px; top: 136px; } .star.star-28 { left: 279px; top: 150px; } .star.star-29 { left: 85px; top: 29px; } .star.star-30 { left: 83px; top: 46px; } .opacity-half { opacity: 0.5; } .opacity-quarter { opacity: 0.25; } .shooting-star { height: 3px; width: 3px; background: #ffffff3b; top: 30px; position: absolute; right: 40px; border-radius: 2px 0 0 2px; transform: translate(0px, 0px) rotate(-45deg); } .shooting-star:before { content: ""; height: 0; width: 0; border-top: 1px solid transparent; border-bottom: 2px solid transparent; border-left: 130px solid #ffffff3b; left: 3px; position: absolute; } @keyframes shootingstar { 0% { transform: translate(0px, 0px) rotate(-45deg); } 100% { transform: translate(-300px, 300px) rotate(-45deg); } } @keyframes startwinkle { 0% { opacity: 0.25; } 50% { opacity: 0.5; } 100% { opacity: 0.25; } }
版权声明:最新版本可以自定义整句版权文案了。。。如发现本站有涉嫌抄袭侵权/违法违规的内容请联系客服!
评论
vsdcs
回复快递单号、空包代发网站www.dh5u.com