UNPKG

holo-card

Version:

A React component for holographic card effects

128 lines (113 loc) 4.67 kB
.card[data-set="Radiant"] .card_shine { --barwidth: 1.2%; --space: 200px; --hue: 50; --imagesize: cover; background-image: radial-gradient( farthest-corner ellipse at calc(((var(--pointer-x)) * 0.5) + 25%) calc(((var(--pointer-y)) * 0.5) + 25%), hsl(0, 0%, 95%) 20%, var(--card-glow) 130% ), repeating-linear-gradient( 45deg, hsl(0, 0%, 10%) 0%, hsl(0, 0%, 10%) 1%, hsl(0, 0%, 10%) var(--barwidth), hsl(0, 0%, 20%) calc(var(--barwidth) + 0.01%), hsl(0, 0%, 20%) calc(var(--barwidth) * 2), hsl(0, 0%, 35%) calc(var(--barwidth) * 2 + 0.01%), hsl(0, 0%, 35%) calc(var(--barwidth) * 3), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 3 + 0.01%), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 4), hsl(0, 0%, 50%) calc(var(--barwidth) * 4 + 0.01%), hsl(0, 0%, 50%) calc(var(--barwidth) * 5), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 5 + 0.01%), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 6), hsl(0, 0%, 35%) calc(var(--barwidth) * 6 + 0.01%), hsl(0, 0%, 35%) calc(var(--barwidth) * 7), hsl(0, 0%, 20%) calc(var(--barwidth) * 7 + 0.01%), hsl(0, 0%, 20%) calc(var(--barwidth) * 8), hsl(0, 0%, 10%) calc(var(--barwidth) * 8 + 0.01%), hsl(0, 0%, 10%) calc(var(--barwidth) * 9), hsl(0, 0%, 0%) calc(var(--barwidth) * 9 + 0.01%), hsl(0, 0%, 0%) calc(var(--barwidth) * 10) ), repeating-linear-gradient( -45deg, hsl(0, 0%, 10%) 0%, hsl(0, 0%, 10%) 1%, hsl(0, 0%, 10%) var(--barwidth), hsl(0, 0%, 20%) calc(var(--barwidth) + 0.01%), hsl(0, 0%, 20%) calc(var(--barwidth) * 2), hsl(0, 0%, 35%) calc(var(--barwidth) * 2 + 0.01%), hsl(0, 0%, 35%) calc(var(--barwidth) * 3), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 3 + 0.01%), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 4), hsl(0, 0%, 50%) calc(var(--barwidth) * 4 + 0.01%), hsl(0, 0%, 50%) calc(var(--barwidth) * 5), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 5 + 0.01%), hsl(0, 0%, 42.5%) calc(var(--barwidth) * 6), hsl(0, 0%, 35%) calc(var(--barwidth) * 6 + 0.01%), hsl(0, 0%, 35%) calc(var(--barwidth) * 7), hsl(0, 0%, 20%) calc(var(--barwidth) * 7 + 0.01%), hsl(0, 0%, 20%) calc(var(--barwidth) * 8), hsl(0, 0%, 10%) calc(var(--barwidth) * 8 + 0.01%), hsl(0, 0%, 10%) calc(var(--barwidth) * 9), hsl(0, 0%, 0%) calc(var(--barwidth) * 9 + 0.01%), hsl(0, 0%, 0%) calc(var(--barwidth) * 10) ); background-size: cover, 210% 210%, 210% 210%; background-position: center, calc(((var(--background-x) - 50%) * 1.5) + 50%) calc(((var(--background-y) - 50%) * 1.5) + 50%), calc(((var(--background-x) - 50%) * 1.5) + 50%) calc(((var(--background-y) - 50%) * 1.5) + 50%); background-blend-mode: exclusion, darken, color-dodge; filter: brightness(0.5) contrast(2) saturate(1.75); mix-blend-mode: color-dodge; } .card[data-set="Radiant"] .card_shine::after { content: ""; background-image: var(--foil), hsl(3, 95%, 85%) calc(var(--space) * 1), hsl(207, 100%, 84%) calc(var(--space) * 2), hsl(29, 100%, 85%) calc(var(--space) * 3), hsl(160, 100%, 86%) calc(var(--space) * 4), hsl(309, 94%, 87%) calc(var(--space) * 5), hsl(188, 95%, 85%) calc(var(--space) * 6), hsl(3, 95%, 85%) calc(var(--space) * 7); background-size: var(--imgsize), 400% 100%; background-position: center, calc(((var(--background-x) - 50%) * -2.5) + 50%) calc(((var(--background-y) - 50%) * -2.5) + 50%); filter: brightness(0.6) contrast(3) saturate(2); mix-blend-mode: color-dodge; background-blend-mode: hard-light; } .card[data-set="Radiant"] .card_shine::before { content: ""; z-index: 2; grid-area: 1/1; background-image: var(--glitter) radial-gradient( farthest-corner ellipse at calc(((var(--pointer-x)) * 0.5) + 25%) calc(((var(--pointer-y)) * 0.5) + 25%), hsla(0, 0%, 58%, 0.8) 10%, hsla(0, 0%, 20%, 0.9) 20%, hsla(0, 0%, 20%, 0.5) 50% ); background-position: center; background-size: 15% 15%, 350% 350%; background-blend-mode: color-dodge; mix-blend-mode: overlay; filter: brightness(0.66) contrast(2) saturate(0.5); } .card[data-set="Radiant"] .card_glare { background-image: radial-gradient( farthest-corner circle at var(--pointer-x) var(--pointer-y), hsla(0, 0%, 100%, 0.33) 0%, hsl(0, 0%, 25%) 110% ); filter: brightness(1) contrast(1.5); mix-blend-mode: hard-light; }