Цыпленок летающий в облаках
Простая анимация летящего в небе с облаками цыпленка реализованная на чистом CSS
HTML
<div class="scene">
<div class="sky">
<div class="sky__cloud-group">
<div class="sky__cloud">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud sky__cloud--small">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud sky__cloud--small">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud sky__cloud--small">
<div class="sky__cloud--bubbles"></div>
</div>
</div>
<div class="sky__cloud-group">
<div class="sky__cloud">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud sky__cloud--small">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud sky__cloud--small">
<div class="sky__cloud--bubbles"></div>
</div>
<div class="sky__cloud sky__cloud--small">
<div class="sky__cloud--bubbles"></div>
</div>
</div>
</div>
<div class="bird">
<div class="bird__head">
<div class="bird__head--hairs"></div>
<div class="bird__head--eye"></div>
<div class="bird__head--spot"></div>
<div class="bird__head--beak"></div>
<div class="bird__head--reflection">
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
<div class="bird__head--reflection--dot"></div>
</div>
</div>
<div class="bird__body"></div>
<div class="bird__wing"></div>
<div class="bird__legs">
<div class="bird__leg bird__leg--left"></div>
<div class="bird__leg bird__leg--right"></div>
</div>
</div>
</div>
<p>Inspired by <a href="https://dribbble.com/shots/2941303-Chick" target="_blank">RemovT</a></p>
CSS
html,
body {
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
}
body {
background-color: #49befe;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
overflow: hidden;
}
body p {
position: absolute;
bottom: 10%;
font-size: .7rem;
color: #ffffff;
opacity: .8;
font-family: 'Quicksand', sans-serif;
text-align: center;
padding: 0 1rem;
}
body p a {
color: currentcolor;
}
.scene {
width: 100vmin;
height: 100vmin;
position: relative;
}
.scene div {
position: absolute;
}
.scene svg {
display: none;
}
.scene *:before,
.scene *:after {
position: absolute;
display: block;
content: '';
}
.scene .sky {
overflow: hidden;
top: 18%;
height: 30%;
width: 100%;
}
.scene .sky:before, .scene .sky:after {
width: 12%;
height: 100%;
z-index: 40;
}
.scene .sky:before {
left: 0;
background-image: linear-gradient(to right, #49befe 40%, rgba(255, 255, 255, 0));
}
.scene .sky:after {
right: 0;
background-image: linear-gradient(to left, #49befe 40%, rgba(255, 255, 255, 0));
}
.scene .bird {
width: 40%;
height: 45%;
top: 51%;
right: 50%;
-webkit-transform: translate(50%, -50%) translateY(0) rotate(0deg);
transform: translate(50%, -50%) translateY(0) rotate(0deg);
will-change: transform;
-webkit-transform-origin: center center;
transform-origin: center center;
-webkit-animation: fly 0.6s infinite cubic-bezier(0.39, 0.58, 0.57, 1);
animation: fly 0.6s infinite cubic-bezier(0.39, 0.58, 0.57, 1);
}
@-webkit-keyframes fly {
50% {
-webkit-transform: translate(50%, -50%) translateY(4.5%) rotate(0.3deg);
transform: translate(50%, -50%) translateY(4.5%) rotate(0.3deg);
}
}
@keyframes fly {
50% {
-webkit-transform: translate(50%, -50%) translateY(4.5%) rotate(0.3deg);
transform: translate(50%, -50%) translateY(4.5%) rotate(0.3deg);
}
}
.sky__cloud-group {
width: 100%;
height: 100%;
top: 0;
left: 0;
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
will-change: transform;
-webkit-animation: clouds-group 5s linear infinite;
animation: clouds-group 5s linear infinite;
}
@-webkit-keyframes clouds-group {
to {
-webkit-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
}
@keyframes clouds-group {
to {
-webkit-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
}
.sky__cloud-group:last-child {
-webkit-transform: translate(100%, 0);
transform: translate(100%, 0);
-webkit-animation: clouds-second-group 5s linear infinite;
animation: clouds-second-group 5s linear infinite;
}
@-webkit-keyframes clouds-second-group {
to {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
}
@keyframes clouds-second-group {
to {
-webkit-transform: translate(0, 0);
transform: translate(0, 0);
}
}
.sky__cloud {
width: 15%;
height: 15%;
background: #ffffff;
right: 0;
top: 15%;
-webkit-transform: translate(50%, 0);
transform: translate(50%, 0);
border-radius: 100vw 100vw 40vw 40vw;
}
.sky__cloud:nth-child(1) {
right: 10%;
}
.sky__cloud:nth-child(2) {
right: 50%;
}
.sky__cloud:nth-child(3) {
right: 90%;
-webkit-transform: translate(50%, 10%) scale(0.9) scaleX(-1);
transform: translate(50%, 10%) scale(0.9) scaleX(-1);
-webkit-filter: FlipH;
filter: FlipH;
}
.sky__cloud--bubbles {
width: 40%;
height: 150%;
top: -50%;
right: -4%;
background: #ffffff;
border-radius: 100vw;
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
}
.sky__cloud--bubbles:before {
background: #ffffff;
width: 130%;
height: 120%;
top: 38%;
right: -21%;
border-radius: 100vw;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.sky__cloud--small {
top: 45%;
}
.sky__cloud--small:nth-child(4) {
right: 30%;
-webkit-transform: translate(50%, 40%) scale(0.7) scaleX(-1);
transform: translate(50%, 40%) scale(0.7) scaleX(-1);
-webkit-filter: FlipH;
filter: FlipH;
}
.sky__cloud--small:nth-child(5) {
right: 70%;
-webkit-transform: translate(50%, 50%) scale(0.6);
transform: translate(50%, 50%) scale(0.6);
}
.bird__head {
width: 56%;
height: 50%;
right: 10%;
top: 11%;
z-index: 40;
}
.bird__head:after {
width: 100.5%;
height: 100%;
right: 0;
top: -1%;
border-radius: 100% 100% 60% 0;
background: #ffec00;
z-index: 20;
}
.bird__head--hairs {
width: 30%;
height: 20%;
left: 44%;
top: -7%;
display: block;
z-index: 40;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
border-radius: 10% 10% 0 0;
overflow: hidden;
}
.bird__head--hairs:before, .bird__head--hairs:after {
width: 26%;
height: 100%;
background: #ffec00;
top: 0;
right: 0;
-webkit-transform: translate(-70%, 7%) rotate(5deg);
transform: translate(-70%, 7%) rotate(5deg);
border-radius: 100vw 100vw 0 0;
}
.bird__head--hairs:after {
-webkit-transform: translate(-185%, 0%) rotate(-32deg);
transform: translate(-185%, 0%) rotate(-32deg);
}
.bird__head--reflection {
top: -9%;
left: 32%;
-webkit-transform: rotate(-152deg);
transform: rotate(-152deg);
width: 50%;
height: 66%;
z-index: 40;
}
.bird__head--reflection--dot {
width: 8.5%;
height: 8.5%;
background: #ffffff;
top: 6%;
left: 27%;
border-radius: 50%;
z-index: 40;
-webkit-transform: translate(50%, 50%);
transform: translate(50%, 50%);
}
.bird__head--reflection--dot:nth-of-type(1) {
-webkit-transform: rotate(0deg) translate(1050%) rotate(1.75deg) rotate(0deg);
transform: rotate(0deg) translate(1050%) rotate(1.75deg) rotate(0deg);
}
.bird__head--reflection--dot:nth-of-type(2) {
-webkit-transform: rotate(1.75deg) translate(1050%) rotate(3.5deg) rotate(-1.75deg);
transform: rotate(1.75deg) translate(1050%) rotate(3.5deg) rotate(-1.75deg);
}
.bird__head--reflection--dot:nth-of-type(3) {
-webkit-transform: rotate(3.5deg) translate(1050%) rotate(5.25deg) rotate(-3.5deg);
transform: rotate(3.5deg) translate(1050%) rotate(5.25deg) rotate(-3.5deg);
}
.bird__head--reflection--dot:nth-of-type(4) {
-webkit-transform: rotate(5.25deg) translate(1050%) rotate(7deg) rotate(-5.25deg);
transform: rotate(5.25deg) translate(1050%) rotate(7deg) rotate(-5.25deg);
}
.bird__head--reflection--dot:nth-of-type(5) {
-webkit-transform: rotate(7deg) translate(1050%) rotate(8.75deg) rotate(-7deg);
transform: rotate(7deg) translate(1050%) rotate(8.75deg) rotate(-7deg);
}
.bird__head--reflection--dot:nth-of-type(6) {
-webkit-transform: rotate(8.75deg) translate(1050%) rotate(10.5deg) rotate(-8.75deg);
transform: rotate(8.75deg) translate(1050%) rotate(10.5deg) rotate(-8.75deg);
}
.bird__head--reflection--dot:nth-of-type(7) {
-webkit-transform: rotate(10.5deg) translate(1050%) rotate(12.25deg) rotate(-10.5deg);
transform: rotate(10.5deg) translate(1050%) rotate(12.25deg) rotate(-10.5deg);
}
.bird__head--reflection--dot:nth-of-type(8) {
-webkit-transform: rotate(12.25deg) translate(1050%) rotate(14deg) rotate(-12.25deg);
transform: rotate(12.25deg) translate(1050%) rotate(14deg) rotate(-12.25deg);
}
.bird__head--reflection--dot:nth-of-type(9) {
-webkit-transform: rotate(14deg) translate(1050%) rotate(15.75deg) rotate(-14deg);
transform: rotate(14deg) translate(1050%) rotate(15.75deg) rotate(-14deg);
}
.bird__head--reflection--dot:nth-of-type(10) {
-webkit-transform: rotate(15.75deg) translate(1050%) rotate(17.5deg) rotate(-15.75deg);
transform: rotate(15.75deg) translate(1050%) rotate(17.5deg) rotate(-15.75deg);
}
.bird__head--reflection--dot:nth-of-type(11) {
-webkit-transform: rotate(17.5deg) translate(1050%) rotate(19.25deg) rotate(-17.5deg);
transform: rotate(17.5deg) translate(1050%) rotate(19.25deg) rotate(-17.5deg);
opacity: 0;
}
.bird__head--reflection--dot:nth-of-type(12) {
-webkit-transform: rotate(19.25deg) translate(1050%) rotate(21deg) rotate(-19.25deg);
transform: rotate(19.25deg) translate(1050%) rotate(21deg) rotate(-19.25deg);
opacity: 0;
}
.bird__head--reflection--dot:nth-of-type(13) {
-webkit-transform: rotate(21deg) translate(1050%) rotate(22.75deg) rotate(-21deg);
transform: rotate(21deg) translate(1050%) rotate(22.75deg) rotate(-21deg);
opacity: 0;
}
.bird__head--reflection--dot:nth-of-type(14) {
-webkit-transform: rotate(22.75deg) translate(1050%) rotate(24.5deg) rotate(-22.75deg);
transform: rotate(22.75deg) translate(1050%) rotate(24.5deg) rotate(-22.75deg);
opacity: 0;
}
.bird__head--reflection--dot:nth-of-type(15) {
-webkit-transform: rotate(24.5deg) translate(1050%) rotate(26.25deg) rotate(-24.5deg);
transform: rotate(24.5deg) translate(1050%) rotate(26.25deg) rotate(-24.5deg);
opacity: 0;
}
.bird__head--reflection--dot:nth-of-type(16) {
-webkit-transform: rotate(26.25deg) translate(1050%) rotate(28deg) rotate(-26.25deg);
transform: rotate(26.25deg) translate(1050%) rotate(28deg) rotate(-26.25deg);
opacity: 0;
}
.bird__head--reflection--dot:nth-of-type(17) {
-webkit-transform: rotate(28deg) translate(1050%) rotate(29.75deg) rotate(-28deg);
transform: rotate(28deg) translate(1050%) rotate(29.75deg) rotate(-28deg);
opacity: 0;
}
.bird__head--reflection--dot:nth-of-type(18) {
-webkit-transform: rotate(29.75deg) translate(1050%) rotate(31.5deg) rotate(-29.75deg);
transform: rotate(29.75deg) translate(1050%) rotate(31.5deg) rotate(-29.75deg);
}
.bird__head--reflection--dot:nth-of-type(19) {
-webkit-transform: rotate(31.5deg) translate(1050%) rotate(33.25deg) rotate(-31.5deg);
transform: rotate(31.5deg) translate(1050%) rotate(33.25deg) rotate(-31.5deg);
}
.bird__head--reflection--dot:nth-of-type(20) {
-webkit-transform: rotate(33.25deg) translate(1050%) rotate(35deg) rotate(-33.25deg);
transform: rotate(33.25deg) translate(1050%) rotate(35deg) rotate(-33.25deg);
}
.bird__head--eye {
width: 15%;
height: 15%;
right: 12%;
background: black;
z-index: 40;
border-radius: 100vw;
-webkit-transform: translate(-50%, 50%);
transform: translate(-50%, 50%);
-webkit-transform-origin: center center;
transform-origin: center center;
top: 31%;
will-change: top, width, height;
-webkit-animation: blink 10s forwards infinite;
animation: blink 10s forwards infinite;
}
@-webkit-keyframes blink {
0%, 4%, 15%, 20%, 30%, 34%, 39%, 43%, 60%, 64%, 100% {
top: 31%;
width: 15%;
height: 15%;
}
2%, 18%, 32%, 41%, 62% {
height: 1%;
top: 44.5%;
}
}
@keyframes blink {
0%, 4%, 15%, 20%, 30%, 34%, 39%, 43%, 60%, 64%, 100% {
top: 31%;
width: 15%;
height: 15%;
}
2%, 18%, 32%, 41%, 62% {
height: 1%;
top: 44.5%;
}
}
.bird__head--spot {
width: 14%;
height: 14%;
right: 38%;
bottom: 35%;
background: #f9b415;
z-index: 40;
border-radius: 50%;
}
.bird__head--beak {
width: 40%;
height: 40%;
top: 0;
right: 0;
-webkit-transform: translate(32%, 82%) rotate(60deg);
transform: translate(32%, 82%) rotate(60deg);
border-radius: 17%;
overflow: hidden;
z-index: 10;
}
.bird__head--beak:before {
width: 68%;
height: 110%;
background: #f17b00;
top: 0;
right: 0;
border-radius: 1% 0 0 0;
-webkit-transform: translate(-9%, -2%) rotate(60deg);
transform: translate(-9%, -2%) rotate(60deg);
z-index: 10;
}
.bird__body {
width: 80.7%;
height: 40%;
right: 10%;
top: 40.7%;
overflow: hidden;
border-radius: 5% 0 0 0;
z-index: 30;
}
.bird__body:before {
width: 100%;
height: 190%;
right: 0;
top: -90%;
border-radius: 7% 0 100% 100%;
background-image: linear-gradient(-45deg, #f9b415 30%, #ffce00 60%);
}
.bird__body:after {
background: #ffec00;
top: -67%;
width: 100%;
height: 150%;
border-radius: 0 100% 100% 100%;
}
.bird__wing {
width: 35%;
height: 20%;
left: 31%;
top: 45%;
display: block;
z-index: 40;
-webkit-transform: translate(-50%, -50%) rotate(-8deg);
transform: translate(-50%, -50%) rotate(-8deg);
border-radius: 10% 10% 0 0;
-webkit-transform-origin: top right;
transform-origin: top right;
overflow: hidden;
will-change: transform;
-webkit-animation: wing 0.6s infinite cubic-bezier(0.39, 0.58, 0.57, 1);
animation: wing 0.6s infinite cubic-bezier(0.39, 0.58, 0.57, 1);
}
@-webkit-keyframes wing {
50% {
-webkit-transform: translate(-50%, -50%) rotate(15deg);
transform: translate(-50%, -50%) rotate(15deg);
}
}
@keyframes wing {
50% {
-webkit-transform: translate(-50%, -50%) rotate(15deg);
transform: translate(-50%, -50%) rotate(15deg);
}
}
.bird__wing:before {
width: 100%;
height: 190%;
right: 0;
top: -90%;
border-radius: 7% 0 100% 100%;
background: #ffce00;
content: '';
display: block;
}
.bird__legs {
width: 100%;
height: 40%;
bottom: 0;
right: 0;
left: 0;
}
.bird__leg {
width: 7.5%;
height: 50%;
overflow: visible;
z-index: 20;
}
.bird__leg:before, .bird__leg:after {
width: 230%;
height: 32%;
bottom: 0;
right: 0;
border-radius: 100vw;
-webkit-transform: translateX(30%);
transform: translateX(30%);
}
.bird__leg:after {
left: -45%;
}
.bird__leg--left {
left: 50%;
background: #dd6900;
-webkit-transform-origin: top center;
transform-origin: top center;
top: 50%;
-webkit-transform: translate(-198%, -68%) rotate(40deg);
transform: translate(-198%, -68%) rotate(40deg);
-webkit-animation: legs-left 0.6s infinite ease-out;
animation: legs-left 0.6s infinite ease-out;
}
@-webkit-keyframes legs-left {
50% {
-webkit-transform: translate(-198%, -68%) rotate(37deg);
transform: translate(-198%, -68%) rotate(37deg);
}
}
@keyframes legs-left {
50% {
-webkit-transform: translate(-198%, -68%) rotate(37deg);
transform: translate(-198%, -68%) rotate(37deg);
}
}
.bird__leg--left:before, .bird__leg--left:after {
background: #dd6900;
}
.bird__leg--right {
top: 50%;
right: 50%;
background: #f17b00;
-webkit-transform: translate(-108%, -70%) rotate(40deg);
transform: translate(-108%, -70%) rotate(40deg);
-webkit-transform-origin: top center;
transform-origin: top center;
will-change: transform;
-webkit-animation: legs-right 0.6s infinite ease-out;
animation: legs-right 0.6s infinite ease-out;
}
@-webkit-keyframes legs-right {
50% {
-webkit-transform: translate(-108%, -70%) rotate(36deg);
transform: translate(-108%, -70%) rotate(36deg);
}
}
@keyframes legs-right {
50% {
-webkit-transform: translate(-108%, -70%) rotate(36deg);
transform: translate(-108%, -70%) rotate(36deg);
}
}
.bird__leg--right:before, .bird__leg--right:after {
background: #f17b00;
}