<div class="poly"></div>
<img class="poly" src="https://picsum.photos/id/1052/300/300" style="--a: 20deg;--r:.4">
$n: 7;
.poly {
--r: 0.25; /* control the radius [0 1] */
--a: 10deg; /* control the rotation */
width: 300px;
aspect-ratio: 1;
background: linear-gradient(in hsl,pink,lightblue);
--_a: (#{180deg/$n}*var(--r));
--_r: (50%*cos(#{180deg/$n})/cos((#{180deg/$n}*(1 - var(--r)))));
$m: ();
@for $i from 0 through ($n - 1) {
$c: line to;@if($i == 0){$c: from;}
$m: append($m,$c calc(50% + var(--_r)*cos(#{$i*360deg/$n} + var(--a) - var(--_a)))
calc(50% + var(--_r)*sin(#{$i*360deg/$n} + var(--a) - var(--_a))),comma);
$m: append($m,curve to calc(50% + var(--_r)*cos(#{$i*360deg/$n} + var(--a) + var(--_a)))
calc(50% + var(--_r)*sin(#{$i*360deg/$n} + var(--a) + var(--_a)))
with calc(50%*(1 + cos(#{$i*360deg/$n} + var(--a))))
calc(50%*(1 + sin(#{$i*360deg/$n} + var(--a)))),comma);
}
clip-path: shape(#{$m});
}
body {
margin: 0;
min-height: 100vh;
display: grid;
place-content: center;
grid-auto-flow: column;
gap: 15px;
background: #774F38;
}
View Compiled
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.