Mask-composite - Propriété CSS

mask-composite

Résumé des caractéristiques de la propriété mask-composite

Description rapide
Définit comment seront combinés les masques lorsque plusieurs sont appliqués sur un élément.
Statut
Standard
Utilisable sur
HTML, SVG
Valeurs prédéfinies
add | exclude | intersect | subtract
Pourcentages
Ne s'appliquent pas.
Valeur initiale
add
Héritée par défaut
Non.
Type d'animation
Discrète : lors d'une animation, la propriété mask-composite passe d'une valeur à l'autre sans transition.
Module W3C
Module CSS - Masquage
Références (W3C)
Statut du document: CR (document candidat à la recommandation)

Schéma de la syntaxe de mask-composite.

mask-composite - Syntax DiagramSyntax diagram of the mask-composite CSS property. add add exclude exclude intersect intersect subtract subtractmask-composite:;mask-composite:;
Schéma syntaxique de la propriété mask-composite.
Cliquez sur les liens du schéma pour plus de précisons sur les valeurs.

Description de la propriété mask-composite.

La propriété mask-composite n'est pas encore bien reconnue par tous les navigateurs (2022). La fonctionnalité de masquage en elle-même pose encore beaucoup de problèmes de compatibilité. Doublez les syntaxes avec la variante -webkit-mask-composite pour améliorer la compatibilité.

Le masquage consiste à cacher certaines parties d'un élément en fonction d'une image (désignée comme étant le masque). Cette possibilité est relativement récente et est définie par le W3C dans le module "CSS Masking".

La propriété mask-composite définit comment interagissent les masques lorsque plusieurs sont appliqués à un élément. Plus précisément elle indique comment un des masques (dénommé "la source") interagit avec celui qui est directement en dessous de lui (nommé "la destination").

Si mask-composite est appliquée sur le dernier masque, elle est ignorée. Cette propriété ne s'applique que entre deux masques, elle ne définit pas l'interaction entre un masque et le contenu de l'élément.

L'ordre des masques est défini par la propriété mask-image ou par la propriété raccourcie mask. Par exemple la syntaxe suivante énumère deux masques. Le masque carre.png étant au dessus de cercle.png.
mask-composite doit donc être appliquée sur carre.png, qui sera alors la source, pour définir son interaction avec cercle.png, qui sera alors la destination. Appliquée sur cercle.png elle n'aura aucun effet.

mask-image: url('carre.png'), url('cercle.png');

Lorsqu'il y a plus de deux masques, mask-composite accepte plusieurs valeurs séparées par des virgules. Dans l'exemple ci-dessous, l'opérateur exclude est d'abord appliqué sur le masque 2, par rapport au masque 3, puis l'opérateur add est appliqué sur le masque 1 par rapport au résultat de la composition des masques 2 et 3.

L'application du masque résultat sur le contenu se fait après que toutes les opérations de combinaisons entre masque aient été réalisées.

mask-image: masque1, masque2, masque3; mask-composite: add, exclude;

Composition de trois masques avec mask-composite

Pour plus d'informations, reportez vous à ces explications sur les masques multiples. Vous trouverez également des informations générales sur la technique de masquage sur la page de mask.

Valeurs pour mask-composite.

Dans ces exemples de syntaxe, "la source" désigne le masque qui est au dessus, et "la destination" désigne celui qui est directement en dessous.

  • mask-composite: add;

  • mask-composite: subtract;

  • mask-composite: intersect;

  • mask-composite: exclude;

  • mask-composite: clear; mask-composite: copy; mask-composite: xor; mask-composite: Etc...

    De nombreuses valeurs, non standardisées par le W3C sont reconnues par certains navigateurs avec le préfixe -webkit-. La pérennité de ces valeurs n'est pas garantie : il est préférable de ne pas les utiliser. Notre simulateur ci-dessous les présente tout de même et permet de se rendre compte de leur effet.

  • mask-composite: initial; (add) mask-composite: inherit; mask-composite: revert; mask-composite: revertLayer; mask-composite: unset;

    Les valeurs communes sont présentées sur ces pages : initial, inherit, revert, revert-layer, unset.

Exemple d'animation de mask-composite.

Deux animations ont été créées pour cet exemple. La première avec les valeurs standardisées par le W3C, et la deuxième avec les valeurs préfixées par -webkit-, donc non standards. Ceci veut dire que vous n'aurez pas le même résultat suivant le navigateur que vous utilisez.

Dans tous les cas, l'animation montre le logo du navigateur Edge, plus ou moins dévoilé en fonction de l'animation sur mask-composite.

Exemple d'animation de mask-composite

Exemple interactif avec la propriété mask-composite.

L'exemple est composé de deux masques et d'un élément constitué en fait d'un simple carré gris (à droite). Les deux masques sont des cercles noirs totalement opaques, sur un fond totalement transparent. Leur code SVG est consultable. Les deux masques sont appliqués à l'élément de droite. Observez l'effet de la propriété mask-composite.

On note aussi que le navigateur Chrome accepte plus de valeurs pour la propriété mask-composite en la faisant précéder du préfixe -webkit-, mais ces valeurs ne sont pas standards.


mask-composite :

-webkit-mask-composite :

Premier masque
Deuxième masque
Élément masqué
(premier exemple)

Compatibilité des navigateurs avec mask-composite.

La propriété mask-composite est relativement bien prise en charge par les navigateurs, mais il y a cependant quelques exceptions. Comme on l'a vu dans les différents exemples, pour que le fonctionnement soit correct sur Chrome, sur Edge, et probablement sur d'autres navigateurs, il est nécessaire de doubler la syntaxe en ajoutant le préfixe -webkit-.

De plus, certaines valeurs de cette propriété ne sont pas standardisées, et reconnues par certains navigateurs seulement. On évitera d'utiliser mask-composite avec ces valeurs.

Colonne 1
Support des techniques de masquage consistant à masquer un élément par une image ou une forme géométrique.
Colonne 2
Support de la propriété mask-composite qui détermine comment doivent être mélangés les différents masques sur un même élément.

Remarques :

(1) Nécessite le préfixe -webkit-.
Supporte les propriétés mask-image et mask-box-image mais pas les autres propriétés relatives aux masques.

(2) Voir aussi la propriété -webkit-mask-composite qui offre des fonctionnalités comparables, avec des valeurs différentes.

1
Masquage par
une image
2
Propriété
mask-composite
Estimation de la prise en charge globale.
92%
92%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

UC Browser pour Androïd

Opéra Mobile

QQ Browser

Baidu Browser

Samsung Internet

Safari

Safari sur IOS

Chrome

Opéra

Edge

Chrome pour Androïd

Firefox pour Androïd

Firefox

Androïd Brower

KaiOS Browser

Opéra mini

Historique de la propriété mask-composite

  • Module CSS - Masquage - Niveau 1

    Introduction des techniques de masquage par image. Et première définition de la propriété résumée mask.
    WD
    15 Novembre 2012
    Document de travail.
    CR
    26 Août 2014
    Candidat à la recommandation.
    PR
    REC

Au sujet des techniques de masquage, voir aussi.

La propriété mask-composite et les propriétés énumérées ci-dessous sont présentées dans la spécification qui standardise tout ce qui concerne le masquage : CSS Masking Module (Module CSS - Masquage).

Propriétés :

clip
Découpe un élément à partir d'un rectangle.
clip-path
Définit la partie visible de l'élément, délimitée par une forme géométrique (rectangle, polygone...).
clip-rule
Définit comment gérer les formes creuses dans le contexte d'un découpage.
mask
Propriété résumée définissant les paramètres de masquage : dimensions du masque, position, répétition, origine, etc.
mask-border
Définit tous les paramètres d'un masque pour la bordure d'un élément.
mask-border-mode
Définit sur quel paramètre le masque doit agir (luminance, alpha).
mask-border-outset
Définit le décalage éventuel du masque de bordure par rapport à l'élément.
mask-border-repeat
Définit le mode de répétition du masque.
mask-border-slice
Définit comment l'image utilisée comme masque doit être découpée.
mask-border-source
Désigne l'image qui sera utilisée comme masque (masque du type bordure).
mask-border-width
Définit l'épaisseur de la bordure pour l'application d'un masque.
mask-clip
Définit la zone concernée par le masquage.
mask-image
Désigne l'image ou le fichier SVG qui sera utilisé comme masque.
mask-mode
Définit le mode de masquage (couche alpha, luminance...)
mask-origin
Définit la référence pour le positionnement du masque.
mask-position
Définit la position du masque.
mask-repeat
Définit le mode de répétition du masque lorsque celui-ci est plus petit que l'élément à masquer.
mask-size
Fixe les dimensions du masque.