* {
margin: 0;
padding: 0;
}
/Background/
.item {
position: relative;
overflow: hidden;
width: 100%;
height: 100vh;
opacity: 0.8;
}
.before {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('https://www.nastol.com.ua/pic/201704/1920x1200/nastol.com.ua-216880.jpg') center center no-repeat;
background-size: cover;
transition: 0.34s linear;
}
.after {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('https://tapety.tja.pl/obrazki/tja_normalne/208831.jpg') center center no-repeat;
background-size: cover;
transition: 0.34s linear;
transform: scale(5) rotate(90deg);
opacity: 0;
filter: blur(30px);
z-index: -1;
}
.before__on {
transform: scale(0.5) rotate(-90deg);
opacity: 0;
filter: blur(30px);
z-index: -1;
animation: animate__before__on 2s ease;
}
.after__on {
transform: scale(1) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
animation: animate__after__on 2s ease;
}
.before__off {
transform: scale(1) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
animation: animate__before__off 2s ease;
}
.after__off {
transform: scale(0.5) rotate(-90deg);
opacity: 0;
filter: blur(30px);
z-index: -1;
animation: animate__after__off 2s ease;
}
@keyframes animate__before__on {
0% {
transform: scale(1) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
}
20% {
transform: scale(1.2) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
}
100% {
transform: scale(0.1) rotate(-90deg);
opacity: 0;
filter: blur(30px);
z-index: -1;
}
}
@keyframes animate__after__on {
0% {
transform: scale(5) rotate(90deg);
opacity: 0;
filter: blur(30px);
z-index: -1;
}
100% {
transform: scale(1) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
}
}
@keyframes animate__before__off {
0% {
transform: scale(5) rotate(90deg);
opacity: 0;
filter: blur(30px);
z-index: -1;
}
100% {
transform: scale(1) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
}
}
@keyframes animate__after__off {
0% {
transform: scale(1) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
}
20% {
transform: scale(1.2) rotate(0deg);
opacity: 1;
filter: blur(0);
z-index: 1;
}
100% {
transform: scale(0.1) rotate(-90deg);
opacity: 0;
filter: blur(30px);
z-index: -1;
}
}
/Progress/
.circle-size,
.circle,
.circle__mask,
.circle__inner {
width: 3em;
height: 3em;
border-radius: 50%;
}
.clip-show-left,
.circle__mask.on-left,
.on-right .circle__inner {
clip: rect(0, 1.5em, 3em, 0);
}
.clip-show-right,
.circle__mask.on-right,
.on-left .circle__inner {
clip: rect(0, 3em, 3em, 1.5em);
}
.circle {
position: absolute;
top: 20px;
left: 20px;
font-size: 30px;
border: 2px solid aliceblue;
}
.circle__mask {
position: absolute;
left: 0;
top: 0;
}
.circle__holder {
position: absolute;
width: 80%;
height: 80%;
left: 10%;
top: 10%;
border-radius: 50%;
}
.circle__inner {
position: absolute;
width: 100%;
height: 100%;
background-color: lightsteelblue;
}
.on-left .circle__inner__on {
animation: circle-left__on 4s linear;
}
.on-right .circle__inner__on {
animation: circle-right__on 4s linear;
}
.on-left .circle__inner__off {
animation: circle-left__off 4s linear;
}
.on-right .circle__inner__off {
animation: circle-right__off 4s linear;
}
@keyframes circle-left__on {
0% {
transform: rotate(0);
}
25% {
transform: rotate(0);
}
50% {
transform: rotate(180deg);
}
75% {
transform: rotate(180deg);
}
100% {
transform: rotate(180deg);
}
}
@keyframes circle-right__on {
0% {
transform: rotate(0);
}
25% {
transform: rotate(180deg);
}
50% {
transform: rotate(180deg);
}
75% {
transform: rotate(180deg);
}
100% {
transform: rotate(180deg);
}
}
@keyframes circle-left__off {
0% {
transform: rotate(180deg);
}
25% {
transform: rotate(180deg);
}
50% {
transform: rotate(360deg);
}
75% {
transform: rotate(360deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes circle-right__off {
0% {
transform: rotate(180deg);
}
25% {
transform: rotate(360deg);
}
50% {
transform: rotate(360deg);
}
75% {
transform: rotate(360deg);
}
100% {
transform: rotate(360deg);
}
}
.circle>span {
position: absolute;
top: 45%;
left: 0;
right: 0;
bottom: 0;
transform: translateY(-25%);
text-align: center;
font-size: 16px;
color: aliceblue;
text-shadow: 2px 1px 4px rgba(0, 0, 0, 0.5);
}
button {
outline: none;
border: none;
display: block;
position: absolute;
top: 120px;
left: 33px;
padding: 3px 6px;
border-radius: 2px;
background-color: aliceblue;
color: #111;
}
button:active {
background-color: #111;
color: aliceblue;
}