UNPKG

holo-card

Version:

A React component for holographic card effects

119 lines (110 loc) 3.52 kB
.card[data-set="Vibrant"] .card_shine { --imgsize: cover; --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: repeating-linear-gradient( var(--angle), hsla(283, 49%, 60%, 0.75) calc(var(--space) * 1), hsla(2, 70%, 58%, 0.75) calc(var(--space) * 2), hsla(53, 67%, 53%, 0.75) calc(var(--space) * 3), hsla(93, 56%, 52%, 0.75) calc(var(--space) * 4), hsla(176, 38%, 50%, 0.75) calc(var(--space) * 5), hsla(228, 100%, 77%, 0.75) calc(var(--space) * 6), hsla(283, 49%, 61%, 0.75) calc(var(--space) * 7) ), 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-size: 200% 400%, var(--glittersize) var(--glittersize), 400% 400%; background-position: 0% calc(var(--background-y) * 1), center center, calc(var(--background-x) * 1.5) calc(var(--background-y) * 1.5); background-blend-mode: luminosity, overlay; filter: brightness(calc((var(--pointer-from-center) * 0.3) + 0.3)) contrast(3) saturate(1.8); } .card[data-set="Vibrant"] .card_shine::after { content: ""; -webkit-mask-image: none !important; mask-image: none !important; 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: overlay; background-size: var(--glittersize) var(--glittersize), 400% 400%; background-position: center center, calc(var(--background-x) * -1.5) calc(var(--background-y) * -1.5); filter: brightness(calc((var(--pointer-from-center) * 0.5) + 0.6)) contrast(3) saturate(1); opacity: calc(1.2 + (var(--pointer-from-center) / 2) * -1); } .card[data-set="Vibrant"] .card_shine::before { content: ""; background-image: var(--foil); background-size: var(--imgsize); background-position: center center; filter: brightness(1.5) contrast(1.5); opacity: calc((var(--pointer-from-center) + 0.6) * 0.4); background-blend-mode: difference; mix-blend-mode: color-dodge; } .card[data-set="Vibrant"] .card_glare { background-image: radial-gradient( farthest-corner circle at var(--pointer-x) var(--pointer-y), hsla(50, 20%, 90%, 0.75) 0%, hsla(150, 20%, 30%, 0.65) 45%, hsla(0, 0%, 0%, 1) 100% ); filter: brightness(0.9) contrast(2); opacity: calc(var(--card-opacity) * 0.75); }