The CSS mask-image property controls element visibility using an image mask. 1. It uses an image's alpha channel—white shows content, black hides it, gray partially reveals it. 2. Apply it with mask-image: url('mask.png'), and adjust with mask-repeat, mask-position, and mask-size. 3. Common issues include missing transparency in the mask image, browser support requiring -webkit- prefixes, and incorrect sizing. 4. Masks can also use gradients for effects like fade-ins, and can be animated for transitions or hover effects.
Using the CSS mask-image
property allows you to control the visibility of elements by masking parts of them with an image. It’s like having a stencil — only the parts of the element that align with the opaque areas of the mask will show through.

What mask-image
does
The mask-image
property lets you define an image (like a PNG or gradient) that acts as a mask over another element. The alpha channel of the mask image determines what parts of the element are visible: white shows content, black hides it, and gray tones partially reveal the content based on their opacity.
You can use it like this:

.element { mask-image: url('mask.png'); }
This is especially useful for creating interesting visual effects without needing extra images or complex HTML structures.
How to apply a basic mask
To get started with mask-image
, follow these simple steps:

- Prepare your mask image: Use a PNG file with transparent or grayscale areas.
- Apply the mask using the
mask-image
property in your CSS. - Adjust positioning and sizing with other related properties like
mask-repeat
,mask-position
, andmask-size
.
Here's a quick example:
.masked { width: 200px; height: 200px; background-color: red; mask-image: url('circle-mask.png'); mask-repeat: no-repeat; mask-position: center; mask-size: contain; }
This would display a red square masked into a circle shape if the mask image is a white circle on a transparent background.
Common issues and how to fix them
Sometimes things don’t work the way you expect. Here are a few common gotchas:
- Mask not showing up? Make sure your mask image has transparency or varying levels of gray. A fully opaque image won't hide anything.
- Browser support: Most modern browsers support
mask-image
, but always test in multiple browsers. Safari might need-webkit-
prefixes. - Incorrect sizing or tiling: Use
mask-size
andmask-repeat
to fine-tune how the mask appears over the element.
Also, keep in mind that the mask works based on luminance unless specified otherwise. So lighter areas show more of the element, darker ones hide it.
Combining with gradients and other effects
Instead of using an image, you can also create masks using gradients:
.masked { mask-image: linear-gradient(to right, black, white); }
This kind of approach is great for fade-ins or soft transitions. You can layer multiple masks using commas, similar to how background images work.
And since masks can be animated just like backgrounds, they’re handy for hover effects or loading animations.
That’s the core of working with mask-image
. Once you understand how the alpha channel affects visibility, it becomes a flexible tool for creative layouts.
The above is the detailed content of How to use the CSS `mask-image` property?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Thevertical-alignpropertyinCSSalignsinlineortable-cellelementsvertically.1.Itadjustselementslikeimagesorforminputswithintextlinesusingvalueslikebaseline,middle,super,andsub.2.Intablecells,itcontrolscontentalignmentwithtop,middle,orbottomvalues,oftenu

accent-color is an attribute used in CSS to customize the highlight colors of form elements such as checkboxes, radio buttons and sliders; 1. It directly changes the default color of the selected state of the form control, such as changing the blue check mark of the checkbox to red; 2. Supported elements include input boxes of type="checkbox", type="radio" and type="range"; 3. Using accent-color can avoid complex custom styles and extra DOM structures, and maintain native accessibility; 4. It is generally supported by modern browsers, and old browsers need to be downgraded; 5. Set accent-col

InstallDartSassvianpmafterinstallingNode.jsusingnpminstall-gsass.2.CompileSCSStoCSSusingthecommandsassinput.scssoutput.css.3.Usesass--watchinput.scssoutput.csstoauto-compileonsave.4.Watchentirefolderswithsass--watchscss:css.5.Usepartialswith_prefixfo

To change the text color in CSS, you need to use the color attribute; 1. Use the color attribute to set the text foreground color, supporting color names (such as red), hexadecimal codes (such as #ff0000), RGB values (such as rgb(255,0,0)), HSL values (such as hsl(0,100%,50%)), and RGBA or HSLA with transparency (such as rgba(255,0,0,0.5)); 2. You can apply colors to any element containing text, such as h1 to h6 titles, paragraph p, link a (note the color settings of different states of a:link, a:visited, a:hover, a:active), buttons, div, span, etc.; 3. Most

CSStransitionsenablesmoothpropertychangeswithminimalcode,idealforhovereffectsandinteractivefeedback.1.Usethesyntaxtransition:propertydurationtiming-functiondelay;todefinetransitions,liketransition:background-color0.3sease0.1s;.2.Specifytransition-pro

UseautomatedtoolslikePurgeCSSorUnCSStoscanandremoveunusedCSS;2.IntegratepurgingintoyourbuildprocessviaWebpack,Vite,orTailwind’scontentconfiguration;3.AuditCSSusagewithChromeDevToolsCoveragetabbeforepurgingtoavoidremovingneededstyles;4.Safelistdynamic

The style placement method needs to be selected according to the scene. 1. Inline is suitable for temporary modification of single elements or dynamic JS control, such as the button color changes with operation; 2. Internal CSS is suitable for projects with few pages and simple structure, which is convenient for centralized management of styles, such as basic style settings of login pages; 3. Priority is given to reuse, maintenance and performance, and it is better to split external link CSS files for large projects.

TheCSSfilterpropertyappliesvisualeffectstoelementsdirectlyinCSS,withcommonusesincluding:1.blur()forsofteningimagesorcreatingdepth,2.brightness()toadjustlightnessordarkness,3.contrast()toenhanceorreducevisualdistinction,4.grayscale()forblack-and-white
