187 lines
4.4 KiB
CSS
187 lines
4.4 KiB
CSS
* {
|
|
box-sizing: border-box;
|
|
}
|
|
:root {
|
|
--primary: #b3ffb9;
|
|
--secondary: #4d4d4d;
|
|
--size: 200;
|
|
--speed: 1;
|
|
}
|
|
h1 {
|
|
font-size: 1.5rem;
|
|
position: fixed;
|
|
bottom: 1rem;
|
|
right: 1rem;
|
|
opacity: 0.5;
|
|
font-weight: bold;
|
|
}
|
|
body {
|
|
-webkit-box-align: center;
|
|
align-items: center;
|
|
background: #666;
|
|
display: -webkit-box;
|
|
display: flex;
|
|
-webkit-box-pack: center;
|
|
justify-content: center;
|
|
min-height: 100vh;
|
|
overflow: hidden;
|
|
margin: 0;
|
|
}
|
|
body:before {
|
|
border-radius: 6px;
|
|
box-shadow: 4px 4px 0 0 #111;
|
|
content: '';
|
|
height: calc(var(--size) * 1px);
|
|
left: 50%;
|
|
position: absolute;
|
|
top: 50%;
|
|
-webkit-transform: translate(-50%, -50%);
|
|
transform: translate(-50%, -50%);
|
|
width: calc(var(--size) * 1px);
|
|
}
|
|
[type='checkbox'] {
|
|
position: fixed;
|
|
left: 100%;
|
|
opacity: 0;
|
|
}
|
|
label {
|
|
position: fixed;
|
|
height: 100vh;
|
|
width: 100vw;
|
|
z-index: 2;
|
|
}
|
|
:checked ~ .container {
|
|
--speed: 5;
|
|
--primary: rgba(179,255,185,0.5);
|
|
--secondary: rgba(77,77,77,0.5);
|
|
border: 4px dashed #fff;
|
|
overflow: visible;
|
|
}
|
|
:checked ~ .container:before {
|
|
background: #fff;
|
|
}
|
|
:checked ~ .container .circle {
|
|
border: 4px dashed #fff;
|
|
}
|
|
.container {
|
|
--primary-switch: var(--secondary);
|
|
--secondary-switch: var(--primary);
|
|
border-radius: 6px;
|
|
height: calc(var(--size) * 1px);
|
|
width: calc(var(--size) * 1px);
|
|
background: var(--primary);
|
|
position: relative;
|
|
overflow: hidden;
|
|
-webkit-animation: flip calc(var(--speed) * 4s) steps(1) infinite, bg calc(var(--speed) * 4s) steps(1) infinite;
|
|
animation: flip calc(var(--speed) * 4s) steps(1) infinite, bg calc(var(--speed) * 4s) steps(1) infinite;
|
|
}
|
|
.container:before {
|
|
border-radius: 50%;
|
|
content: '';
|
|
height: 10px;
|
|
left: 50%;
|
|
position: absolute;
|
|
top: 50%;
|
|
-webkit-transform: translate(-50%, -50%);
|
|
transform: translate(-50%, -50%);
|
|
width: 10px;
|
|
z-index: 5;
|
|
}
|
|
.circle {
|
|
-webkit-animation: rotate calc(var(--speed) * 1s) ease-in-out infinite alternate;
|
|
animation: rotate calc(var(--speed) * 1s) ease-in-out infinite alternate;
|
|
height: 100%;
|
|
left: 0%;
|
|
position: absolute;
|
|
top: 40%;
|
|
-webkit-transform-origin: 50% 0%;
|
|
transform-origin: 50% 0%;
|
|
width: 100%;
|
|
}
|
|
.circle:after {
|
|
--primary-switch: var(--primary);
|
|
--secondary-switch: var(--secondary);
|
|
-webkit-clip-path: inset(0% 45% 90% 45% round 50% 50%);
|
|
-webkit-animation: clip calc(var(--speed) * 1s) ease-in-out infinite alternate, bg calc(var(--speed) * 4s) steps(1) infinite;
|
|
animation: clip calc(var(--speed) * 1s) ease-in-out infinite alternate, bg calc(var(--speed) * 4s) steps(1) infinite;
|
|
background: var(--secondary);
|
|
clip-path: inset(0% 45% 90% 45% round 50% 50%);
|
|
content: '';
|
|
height: 200%;
|
|
left: 50%;
|
|
position: absolute;
|
|
top: 0%;
|
|
-webkit-transform: translate(-50%, 0);
|
|
transform: translate(-50%, 0);
|
|
-webkit-transform-origin: 50% 0;
|
|
transform-origin: 50% 0;
|
|
width: 200%;
|
|
}
|
|
@-webkit-keyframes flip {
|
|
25% {
|
|
-webkit-transform: rotateY(0deg) rotateX(180deg);
|
|
transform: rotateY(0deg) rotateX(180deg);
|
|
}
|
|
50% {
|
|
-webkit-transform: rotateY(180deg) rotateX(180deg);
|
|
transform: rotateY(180deg) rotateX(180deg);
|
|
}
|
|
75% {
|
|
-webkit-transform: rotateY(180deg) rotateX(0deg);
|
|
transform: rotateY(180deg) rotateX(0deg);
|
|
}
|
|
}
|
|
@keyframes flip {
|
|
25% {
|
|
-webkit-transform: rotateY(0deg) rotateX(180deg);
|
|
transform: rotateY(0deg) rotateX(180deg);
|
|
}
|
|
50% {
|
|
-webkit-transform: rotateY(180deg) rotateX(180deg);
|
|
transform: rotateY(180deg) rotateX(180deg);
|
|
}
|
|
75% {
|
|
-webkit-transform: rotateY(180deg) rotateX(0deg);
|
|
transform: rotateY(180deg) rotateX(0deg);
|
|
}
|
|
}
|
|
@-webkit-keyframes rotate {
|
|
to {
|
|
-webkit-transform: rotate(180deg) translate(0, -10%);
|
|
transform: rotate(180deg) translate(0, -10%);
|
|
}
|
|
}
|
|
@keyframes rotate {
|
|
to {
|
|
-webkit-transform: rotate(180deg) translate(0, -10%);
|
|
transform: rotate(180deg) translate(0, -10%);
|
|
}
|
|
}
|
|
@-webkit-keyframes clip {
|
|
to {
|
|
-webkit-clip-path: inset(0 0 0 0 round 0 0);
|
|
clip-path: inset(0 0 0 0 round 0 0);
|
|
}
|
|
}
|
|
@keyframes clip {
|
|
to {
|
|
-webkit-clip-path: inset(0 0 0 0 round 0 0);
|
|
clip-path: inset(0 0 0 0 round 0 0);
|
|
}
|
|
}
|
|
@-webkit-keyframes bg {
|
|
25% {
|
|
background: var(--primary-switch);
|
|
}
|
|
75% {
|
|
background: var(--secondary-switch);
|
|
}
|
|
}
|
|
@keyframes bg {
|
|
25% {
|
|
background: var(--primary-switch);
|
|
}
|
|
75% {
|
|
background: var(--secondary-switch);
|
|
}
|
|
} |