<input type="checkbox" id="trick">
<div class="content">
<div class="equalizer">
<input type="range" id="eqz" value="0" autocomplete="off" max="100" onclick="document.body.style.setProperty('--eqz', this.value);" oninput="document.body.style.setProperty('--eqz', this.value);">
<div class="number"></div>
</div>
</div>
<label for="trick">TRICK</label>
<ul>
<li>
<a href="https://codepen.io/josetxu/full/oNQxxyZ" target="_top">Curved</a>
</li>
<li>
<a href="https://codepen.io/josetxu/full/MWzyZzX" target="_top" class="selected">Ovoid</a>
</li>
<li>
<a href="https://codepen.io/josetxu/full/poQymMX" target="_top">Recurved</a>
</li>
</ul>
@import url('https://fonts.googleapis.com/css2?family=Gochi+Hand&display=swap');
:root {
--sz: 1vmin;
--bg-trick: #fff0;
--eqz: 0;
}
*, *:before, *:after {
box-sizing: border-box;
transition: all 0s ease 0s;
font-family: 'Gochi Hand', Arial, serif;
}
body {
margin: 0;
padding: 0;
width: 100vw;
height: 100vh;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #3a3d44, #3b3e45, #383b42);
}
body:before, body:after {
content: "";
position: absolute;
width: 100%;
height: 100%;
background:
repeating-conic-gradient(#0002 0.000095%, #fff0 .0005%, #fff0 .005%, #fff0 .0005%),
repeating-conic-gradient(#0002 0.00001%, #fff0 .00009%, #fff0 .00075%, #fff0 .000025%);
opacity: 0.75;
filter: blur(0.75px);
z-index: -1;
}
.content {
position: relative;
width: calc(var(--sz) * 50);
height: calc(var(--sz) * 20);
display: flex;
align-items: center;
justify-content: center;
margin-left: calc(var(--sz) * 20);
}
.content:before, .content:after {
content: "";
position: absolute;
width: calc(var(--sz) * 23.5);
height: calc(var(--sz) * 17);
border: var(--sz) solid #ffffff;
border-radius: 80% 40% 40% 80% / 60% 60% 60% 60%;
top: calc(var(--sz) * 1.1);
left: calc(var(--sz) * 2.5);
transform: rotate(0deg);
transform-origin: 0 0;
z-index: -5;
clip-path: polygon(0 30%, 0 0, 100% 0, 100% 100%, 0 100%, 0 70%, 10% 65%, 15% 45%);
}
.content:after {
border-color: #0006;
top: calc(var(--sz) * 1.5);
left: calc(var(--sz) * 2.5);
filter: blur(2px);
z-index: -6;
}
.equalizer {
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.equalizer:before, .equalizer:after {
content: "";
--ss: #fff;
background: radial-gradient(#fff0 calc(var(--sz) * 2.6), var(--ss) calc(calc(var(--sz) * 2.6) + 1px));
width: calc(var(--sz) * 7);
position: absolute;
height: calc(var(--sz) * 7);
border-radius: 100%;
left: calc(var(--sz) * -1);
top: calc(var(--sz) * 6.3);
z-index: -5;
}
.equalizer:after {
--ss: #0006;
filter: blur(2px);
left: calc(var(--sz) * -0.5);
top: calc(var(--sz) * 6.5);
z-index: -6;
}
/* Range Styles */
input[type='range'] {
width: 100%;
height: calc(var(--sz) * 3);
position: absolute;
background: var(--bg-trick);
--bg-thumb: radial-gradient(#ff3a3a calc(var(
--sz) * 2.35), #fff0 0 100%);
--bs-thumb: 0 0 0px calc(var(
--sz) * 0.5) #3a3d44 inset;
transform: rotate(calc(var(--eqz) * 1.8125deg));
transform-origin: 50% 50%;
filter: hue-rotate(calc(var(--eqz) * -2.25deg));
}
input[type='range']:focus,
input[type=range]:focus::-webkit-slider-runnable-track {
outline: none;
}
input[type='range'],
input[type='range']::-webkit-slider-runnable-track,
input[type='range']::-webkit-slider-thumb {
-webkit-appearance: none;
}
/*** Range Thumb***/
input[type=range]::-webkit-slider-thumb {
width: calc(var(--sz) * 5);
height: calc(var(--sz) * 5);
border-radius: calc(var(--sz) * 5);
cursor: pointer;
margin-top: calc(var(--sz) * -1);
background: var(--bg-thumb);
box-shadow: var(--bs-thumb);
}
input[type=range]::-moz-range-thumb {
width: calc(var(--sz) * 5);
height: calc(var(--sz) * 5);
border-radius: calc(var(--sz) * 5);
cursor: pointer;
margin-top: calc(var(--sz) * -1);
background: var(--bg-thumb);
box-shadow: var(--bs-thumb);
}
/*** Range Track ***/
input[type=range]::-webkit-slider-runnable-track {
background: #fff0;
height: calc(var(--sz) * 3.5);
}
input[type=range]::-moz-range-track {
background: #fff0;
height: calc(var(--sz) * 3.5);
}
/*** Number ***/
.number {
position: absolute;
bottom: calc(var(--sz) * 14);
left: calc(var(--sz) * 7);
color: #fff;
font-size: calc(var(--sz) * 8);
z-index: 333;
font-family: 'Alarm Clock', Arial, serif;
transform: rotate(-3deg);
text-shadow: calc(var(--sz) * 0.25) calc(var(--sz) * 0.25) calc(var(--sz) * 0.25) #0008;
}
.number:before {
counter-reset: variable var(--eqz);
content: counter(variable);
position: absolute;
text-align: center;
width: calc(var(--sz) * 15);
overflow: hidden;
}
/*** Trick ***/
#trick {
display: none;
}
label[for=trick] {
font-size: calc(var(--sz) * 3.5);
position: absolute;
bottom: calc(var(--sz) * 10);
--cc: #fff;
color: var(--cc);
cursor: pointer;
text-shadow: calc(var(--sz) * 0.25) calc(var(--sz) * 0.25) calc(var(--sz) * 0.25) #0008;
}
#trick:checked + .content {
--bg-trick: #fff2;
}
label[for=trick]:hover {
--cc: #2196F3;
}
label[for=trick]:before {
content: "SHOW";
margin-right: var(--sz);
}
input#trick:checked ~ label[for=trick] {
color: var(--cc);
}
input#trick:checked ~ label[for=trick]:before {
content: "HIDE";
}
input[type='range']:before, input[type='range']:after {
content: "this is the range input";
position: absolute;
right: calc(var(--sz) * 4.25);
font-size: calc(var(--sz) * 1.75);
color: #0000;
z-index: -1;
top: calc(var(--sz) * -0.25);
}
input[type='range']:after {
content: "slide to see the trick";
top: calc(var(--sz) * 1.25);
right: calc(var(--sz) * 4.25);
}
input#trick:checked + .content input[type='range']:before,
input#trick:checked + .content input[type='range']:after {
color: #0008;
}
/* Ranges Menu */
ul {
position: absolute;
top: calc(var(--sz) * 6);
margin: 0;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
}
ul li {
display: inline-block;
margin: calc(var(--sz) * 2);
width: calc(var(--sz) * 7);
height: calc(var(--sz) * 7);
position: relative;
}
ul li a {
display: block;
--clr: #222;
position: absolute;
width: 100%;
height: 100%;
background:
radial-gradient(circle at 15% 40%, #fff0 calc(var(--sz) * 0.25), var(--clr) calc(calc(var(--sz) * 0.25) + 1px) calc(var(--sz) * 0.5), #fff0 calc(calc(var(--sz) * 0.5) + 1px) ),
radial-gradient(circle at 85% 37%, #fff0 calc(var(--sz) * 0.25), var(--clr) calc(calc(var(--sz) * 0.25) + 1px) calc(var(--sz) * 0.5), #fff0 calc(calc(var(--sz) * 0.5) + 1px) );
display: flex;
align-items: flex-end;
justify-content: center;
text-decoration: none;
color: var(--clr);
}
ul li a:before, ul li:nth-child(3) a:after {
content: "";
position: absolute;
width: calc(var(--sz) * 5);
height: calc(var(--sz) * 5);
border: calc(var(--sz) * 0.33) solid var(--clr);
border-radius: 155% 75%;
top: calc(var(--sz) * 0.5);
left: calc(var(--sz) * 1.1);
transform: rotate(8deg);
transform-origin: 0 0;
clip-path: polygon(0 0, 100% 0, 100% 21%, 0 41%);
clip-path: polygon(0 0, 100% 0, 99% 22%, 82% 28%, 20% 38%, 0 41%);
}
ul li:nth-child(2) a {
background:
radial-gradient(circle at 30% 35%, #fff0 calc(var(--sz) * 0.25), var(--clr) calc(calc(var(--sz) * 0.25) + 1px) calc(var(--sz) * 0.5), #fff0 calc(calc(var(--sz) * 0.5) + 1px) );
}
ul li:nth-child(2) a:before {
width: calc(var(--sz) * 3.5);
height: calc(var(--sz) * 2.5);
border-radius: 80% 40% 40% 80% / 60% 60% 60% 60%;
top: calc(var(--sz) * 1.15);
left: calc(var(--sz) * 2);
transform: rotate(0deg);
clip-path: polygon(0 30%, 0 0, 100% 0, 100% 100%, 0 100%, 0 70%, 10% 65%, 15% 45%);
}
ul li:nth-child(3) a {
background:
radial-gradient(circle at 15% 40%, #fff0 calc(var(--sz) * 0.25), var(--clr) calc(calc(var(--sz) * 0.25) + 1px) calc(var(--sz) * 0.5), #fff0 calc(calc(var(--sz) * 0.5) + 1px) ),
radial-gradient(circle at 50% 39%, #fff0 calc(var(--sz) * 0.25), var(--clr) calc(calc(var(--sz) * 0.25) + 1px) calc(var(--sz) * 0.5), #fff0 calc(calc(var(--sz) * 0.5) + 1px) ),
radial-gradient(circle at 85% 37%, #fff0 calc(var(--sz) * 0.25), var(--clr) calc(calc(var(--sz) * 0.25) + 1px) calc(var(--sz) * 0.5), #fff0 calc(calc(var(--sz) * 0.5) + 1px) );
}
ul li:nth-child(3) a:before {
width: calc(var(--sz) * 2.5);
height: calc(var(--sz) * 2.5);
top: calc(var(--sz) * 1.5);
}
ul li:nth-child(3) a:after {
width: calc(var(--sz) * 2.5);
height: calc(var(--sz) * 2.5);
top: calc(var(--sz) * 3.8);
transform: rotate(180deg);
transform-origin: 100% 0;
}
a.selected {
cursor: default;
--clr: #fff;
}
a:hover {
--clr: #fff;
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.