css-houdini-fractals
Version:
Fractals Drawing with CSS Houdini
129 lines (117 loc) • 3.49 kB
CSS
html, body {
height: 100%;
}
html {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
body {
display: flex;
flex-direction: column;
align-items: center;
background-image: linear-gradient(180deg, hsl(0 0% 100% / 0.2) 1%, hsl(0 0% 100% / 0.2) 30%,#fff),
linear-gradient(25deg, #ce084b, #017bdc 32%,#FFEB3B);
background-repeat: no-repeat;
background-size: cover;
}
h1,
section {
padding: 20px;
margin: 20px;
background-color: white;
box-shadow: 0 1px 2px rgba(0,0,0,.5);
}
section { max-width: calc(100vw - 80px); }
/*
For more on how the <h1> works see my personal site and the CSS source:
https://conradsollitt.com/
*/
h1 { font-size:3em; letter-spacing: 0.08em; }
h1 span { --h: 0; --s: 100%; --l: 50%; }
h1 span:nth-child(2n) { --h: 120; }
h1 span:nth-child(3n) { --h: 240; }
h1 span:nth-child(4n) { --h: 60; }
h1 span {
color: hsl(var(--h), var(--s), var(--l));
--darkest: calc(var(--l) - 30%);
--outline: hsl(var(--h), var(--s), var(--darkest));
text-shadow:
-1px -1px var(--outline),
1px -1px var(--outline),
-1px 1px var(--outline),
1px 1px var(--outline);
}
.flex { display:flex; flex-wrap: wrap; justify-content: center; }
.center { justify-content: center; }
section > div {
display: flex;
padding: 10px;
flex-direction: column;
}
label {
margin-bottom: 8px;
width:150px;
color: #888;
}
select,
input[type="text"],
input[type="number"] { padding:.5em 1em; }
input { position: relative; }
input::before {
position: absolute;
content: attr(current-value);
top: -25px;
right: 0;
font-weight: bold;
font-size: 1.2em;
color: black;
}
@media (min-width: 800px) {
section > div { flex-direction: row; justify-content: space-between; }
label { margin-bottom: 0; margin-right: 60px; }
input[type="range"] { width: 200px; }
input::before { left: -40px; right: initial; top: initial; }
input#max-draw-count::before { left: -60px; }
}
.demo {
width: calc(100vw - 80px);
height: 50vh;
}
@media (min-width: 800px) {
.demo { width:600px; }
}
@media (min-width: 1200px) {
.demo { width:50vw; }
}
a[href^="https://github.com/"] {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 2em;
}
a[href^="https://github.com/"]::before {
content: '';
background-image: url(https://github.githubassets.com/favicons/favicon.svg);
background-repeat: no-repeat;
height: 32px;
width: 32px;
padding-right: 2em;
}
/*
By default only `background-image: paint(fractals)` is needed.
The example below shows all options with default values, except
for [--colors] which is empty resulting in black lines.
[--colors] are dynamic and based on the number of colors included.
[--shape] = One of [line, circle, square]
[--debug-to-console] and [-show-origin] = 0 or 1
*/
.fractals {
--colors: red green blue cyan magenta yellow;
--angle: 30;
--starting-length-percent: 22;
--next-line-size: 0.8;
--shape: line;
--max-draw-count: 10000;
--debug-to-console: 0;
--show-origin: 0;
background-image: paint(fractals);
}