html风车旋转动画,css3+html实现傍晚日落下的风车转动动画

b519f8b93f44f4d0ba9f1ee72884825c.png

最终效果如上图,主要是利用html绘制插画的结构体,然后css3的transform和背景渐变linear-gradient去实现动画的平滑过渡html>

css3+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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值