sdxc

[ @sdxc/u/effects ]

mask-image

Applies a CSS mask image, or the given subset of mask properties when passed an options object.

import { mask } from "@sdxc/u/effects";

Quick reference

Every documented call, beside the CSS it emits.

CallCSS
u.mask("linear-gradient(to bottom, transparent, black)")css({ maskImage: "linear-gradient(to bottom, transparent, black)", WebkitMaskImage: "linear-gradient(to bottom, transparent, black)" })
u.mask({ image: "url(/badge.png)", size: "contain", position: "center", repeat: "no-repeat" })css({ maskImage: "url(/badge.png)", WebkitMaskImage: "url(/badge.png)", maskSize: "contain", WebkitMaskSize: "contain", maskPosition: "center", WebkitMaskPosition: "center", maskRepeat: "no-repeat", WebkitMaskRepeat: "no-repeat" })

Examples

Basic example

Use mask(image) with a gradient or an image to hide an element where the mask is transparent:

<img
	mix={[mask("linear-gradient(to bottom, black 40%, transparent)"), ...]}
	src={...}
	alt=""
/>

Using a radial gradient

Any CSS image works as a mask, like a radial-gradient() that fades an image out from its centre:

<img
	mix={[mask("radial-gradient(closest-side, black 50%, transparent)"), ...]}
	src={...}
	alt=""
/>

Setting size and repeat

Pass an object to set the mask's image, size, position, repeat and mode together:

<img
	mix={[
		mask({
			image: "radial-gradient(circle, black 45%, transparent 50%)",
			size: "0.75rem 0.75rem",
			repeat: "repeat",
		}),
		...,
	]}
	src={...}
	alt=""
/>

Applying on a state

Wrap the call in a state utility to scope it to one selector.

u.hover(u.mask("linear-gradient(to bottom, transparent, black)"))

Responsive design

Wrap the call in a container query to scope it to one width.

u.at("md", u.mask("linear-gradient(to bottom, transparent, black)"))

Signature

u.mask(image: string)

Written by Sergio Xalambrí. Follow @sergiodxa for new packages, or sponsor the work.