holo-card
Version:
A React component for holographic card effects
118 lines (102 loc) • 3.16 kB
CSS
.card[data-set="Glittery"] .card_shine {
--r-clr-1: hsl(0, 57%, 37%);
--r-clr-2: hsl(40, 53%, 39%);
--r-clr-3: hsl(90, 60%, 35%);
--r-clr-4: hsl(180, 60%, 35%);
--r-clr-5: hsl(180, 60%, 35%);
--r-clr-6: hsl(210, 57%, 39%);
--r-clr-7: hsl(280, 55%, 31%);
background-image: linear-gradient(-45deg, var(--r-clr-1), var(--r-clr-5)),
var(--glitter),
linear-gradient(
-30deg,
var(--r-clr-1),
var(--r-clr-2),
var(--r-clr-3),
var(--r-clr-4),
var(--r-clr-5),
var(--r-clr-6),
var(--r-clr-7),
var(--r-clr-1),
var(--r-clr-2),
var(--r-clr-3),
var(--r-clr-4),
var(--r-clr-5),
var(--r-clr-6),
var(--r-clr-7),
var(--r-clr-1),
var(--r-clr-2),
var(--r-clr-3),
var(--r-clr-4),
var(--r-clr-5),
var(--r-clr-6),
var(--r-clr-7),
var(--r-clr-1)
);
background-blend-mode: luminosity, soft-light;
background-size: 200% 200%, var(--glittersize) var(--glittersize), 400% 400%;
background-position: calc(25% + (50% * var(--pointer-from-left)))
calc(25% + (50% * var(--pointer-from-top))),
center center,
calc(25% + (var(--pointer-x) / 2)) calc(25% + (var(--pointer-y) / 2));
filter: brightness(calc((var(--pointer-from-center) * 0.25) + 0.6))
contrast(2.2) saturate(0.75);
}
.card[data-set="Glittery"] .card_shine::after {
content: "";
-webkit-mask-image: none ;
mask-image: none ;
background-image: var(--glitter),
linear-gradient(
-60deg,
var(--r-clr-1),
var(--r-clr-2),
var(--r-clr-3),
var(--r-clr-4),
var(--r-clr-5),
var(--r-clr-6),
var(--r-clr-7),
var(--r-clr-1),
var(--r-clr-2),
var(--r-clr-3),
var(--r-clr-4),
var(--r-clr-5),
var(--r-clr-6),
var(--r-clr-7),
var(--r-clr-1),
var(--r-clr-2),
var(--r-clr-3),
var(--r-clr-4),
var(--r-clr-5),
var(--r-clr-6),
var(--r-clr-7),
var(--r-clr-1)
);
background-blend-mode: soft-light;
background-size: var(--glittersize) var(--glittersize), 400% 400%;
background-position: center center, var(--pointer-x) var(--pointer-y);
filter: brightness(calc((var(--pointer-from-center) * 0.3) + 0.55))
contrast(2) saturate(1);
mix-blend-mode: color-dodge;
}
.card[data-set="Glittery"] .card_shine::before {
content: "";
background-image: var(--foil);
background-size: var(--imgsize);
background-position: center center;
filter: brightness(2.5) contrast(1);
opacity: calc((var(--pointer-from-center) + 0.4) * 0.6);
background-blend-mode: difference;
mix-blend-mode: darken;
}
.card[data-set="Glittery"] .card_glare {
background-image: radial-gradient(
farthest-corner circle at var(--pointer-x) var(--pointer-y),
hsl(0, 0%, 80%),
hsla(187, 10%, 85%, 0.25) 30%,
hsl(197, 6%, 25%) 120%
);
filter: brightness(0.9) contrast(1.75);
opacity: calc(var(--pointer-from-center) * 0.9);
mix-blend-mode: hard-light;
}