This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.
Summary
The mask-composite
CSS property represents a compositing operation used on the current mask layer with the mask layers below it.
Initial value | add |
---|---|
Applies to | all elements; In SVG, it applies to container elements excluding the <defs> element and all graphics elements |
Inherited | no |
Media | visual |
Computed value | as specified |
Animation type | discrete |
Canonical order | the unique non-ambiguous order defined by the formal grammar |
Syntax
/* Keyword values */ mask-composite: add; mask-composite: subtract; mask-composite: intersect; mask-composite: exclude; /* Global values */ mask-composite: inherit; mask-composite: initial; mask-composite: unset;
Values
For the composition the current mask layer is referred to as source, while all layers below it are referred to as destination.
add
- The source is placed over the destination.
subtract
- The source is placed, where it falls outside of the destination.
intersect
- The parts of source that overlap the destination, replace the destination.
exclude
- The non-overlapping regions of source and destination are combined.
Formal syntax
<compositing-operator>#where
<compositing-operator> = add | subtract | intersect | exclude
Example
CSS Content
#masked { width: 100px; height: 100px; background-color: #8cffa0; mask-image: url(https://mdn.mozillademos.org/files/12668/MDN.svg), url(https://mdn.mozillademos.org/files/12676/star.svg); mask-size: 100% 100%; mask-composite: add; /* Can be changed in the live sample */ }
HTML Content
<div id="masked"> </div> <select id="compositeMode"> <option value="add">add</option> <option value="subtract">subtract</option> <option value="intersect">intersect</option> <option value="exclude">exclude</option> </select>
JavaScript Content
var clipBox = document.getElementById("compositeMode"); clipBox.addEventListener("change", function (evt) { document.getElementById("masked").style.maskClip = evt.target.value; });
Specifications
Specification | Status | Comment |
---|---|---|
CSS Masking Level 1 The definition of 'mask-composite' in that specification. |
Candidate Recommendation | Initial definition |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | No support[1] | No support[2] | No support | No support[1] | No support[1] |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | ? | No support[1] | No support | ? | ? |
[1] WebKit and Blink have a -webkit-mask-composite
property, which has different keywords.
[2] This feature is not implemented yet. It is only available in Nightly and Dev Edition. See bug 1251161.