Mask - Propriété CSS

mask

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

Description rapide
Propriété résumée définissant les paramètres de masquage : dimensions du masque, position, répétition, origine, etc.
Statut
Standard
S'applique à
HTML : tous les éléments.
SVG : conteneurs sauf defs, éléments graphiques, use.
Pourcentages
Reportez-vous aux propriétés individuelles.
Valeur initiale
Voir les propriétés individuelles.
Héritée par défaut
Non.
Voir les propriétés individuelles.
Module W3C
Module CSS - Masquage
Statut du document: CR (document candidat à la recommandation)

Description de la propriété mask.

La technique de masquage permet de cacher certaines parties d'un élément en fonction d'un masque. Ce dernier sera le plus souvent une image, mais peut aussi être un fichier SVG, ou défini avec des fonctions de dégradé comme linear-gradient() par exemple.

En ajustant la densité du masque, il est possible de masquer totalement l'élément ou de seulement l'estomper. Ceci est un plus par rapport à la propriété clip-path qui ne permet que les découpes franches.

mask est une propriété résumée qui définit les valeurs pour les propriétés suivantes :

  • mask-image : Désigne l'image ou le fichier SVG qui sera utilisé comme masque.
  • mask-position : Définit la position du masque.
  • mask-size : Fixe les dimensions 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-origin : Définit la référence pour le positionnement du masque.
  • mask-clip : Définit la zone concernée par le masquage.
  • mask-composite : Définit comment seront combinés les masques lorsque plusieurs sont appliqués sur un élément.
  • mask-mode : Définit le mode de masquage (couche alpha, luminance...)

Valeurs pour mask.

mask étant une propriété résumée, elle regroupe toutes les valeurs des propriétés individuelles. Reportez-vous à la page de chacune de ces propriétés pour une description précise de leur syntaxe. Les exemples ci-dessous sont également un bon moyen de découvrir les syntaxes les plus courantes.

  • mask: none;

    Il n'y a pas de masquage de l'élément. Si un masquage était prévu, il est supprimé.

  • mask: <image> <position> / <size> <repeat> <origin> <clip> <composite> <mode>;

    La propriété résumée reprend les valeurs de toutes les propriétés détaillées, dans l'ordre énuméré ci-dessus. Il y a une certaines tolérance dans cet ordre dans la mesure où il s'agit de mots réservés tous différents. par contre le / est obligatoire si vous voulez préciser la taille du maques.
    Les valeurs ignorées sont remises à leur valeur initiale.

  • mask: initial; mask: inherit; mask: revert; mask: revert-layer; mask: revert-rule; mask: unset;

    Pour plus d'informations, reportez-vous aux pages de présentation de ces différentes valeurs : initial, inherit, revert, revert-layer, revert-rule, unset.

Exemples.

Masquer avec une image PNG.

Le fichier PNG a des dimensions intrinsèques. Il est possible de répéter celui-ci pour couvrir tout l'élément.

Illustration de la propriété CSS mask - L'image

L'élément d'origine : une image
(mais cela pourrait être un texte).


Illustration de la propriété CSS mask - Le masque



Le masque : un fichier PNG.
Illustration de la propriété CSS mask - Le résultat

Le résultat : l'image après masquage.

 

Masquer avec un dégradé.

Le dégradé n'a pas forcément de dimensions intrinsèque, comme c'est le cas dans notre exemple. Dans ce cas il s'adapte à la taille de l'élément à masquer : l'information de répétition est ignorée. Si vous souhaitez un motif qui se répète, utilisez plutôt les fonctions de dégradé répétitif : repeating-linear-gradient(), repeating-conic-gradient() ou repeating-radial-gradient().

La technique de masquage d'un élément à partir d'un autre est très utile dans de nombreux cas. On peut s'en servir par exemple pour découper un élément (image ou texte) suivant une forme irrégulière.

L'élément d'origine : un texte.



Le masque :
un dégradé linéaire
défini par le fonction linear-gradient().
La technique de masquage d'un élément à partir d'un autre est très utile dans de nombreux cas. On peut s'en servir par exemple pour découper un élément (image ou texte) suivant une forme irrégulière.

Le résultat : le texte masqué par le dégradé.

 

Masquer avec un fichier SVG.

Le fichier SVG doit contenir une balise mask avec un identifiant et l'attribut mask-type. Ce dernier peut avoir la valeur alpha ou luminance. On peut remplacer l'attribut mask-type par du CSS et la propriété du même nom. Sur l'élément à masquer, on utilise bien sûr le nom du fichier, avec l'indication d'un signet introduit par # (voir le code CSS).

Illustration de la propriété CSS mask - L'image

L'élément d'origine : une image.
Masque pour exemple

Le masque : un fichier SVG.
Illustration de la propriété CSS mask - Le résultat

Le résultat.

 

La forme SVG peut aussi être définie dans la page. Dans ce cas, il suffit d'indiquer l'identifiant #ID. Le reste du SVG est globalement le même que dans le cas d'un fichier séparé.

Illustration de la propriété CSS mask - L'image

L'élément d'origine : une image.


Le masque : un fichier SVG en local.
Illustration de la propriété CSS mask - Le résultat

Le résultat.

Hachurer du texte.

Lorsque l'élément masqué a un arrière-plan (couleur ou image), celui-ci est également hachuré. Certains navigateurs comme Chrome, proposent la valeur non standard text pour mask-clip. Cette valeur n'applique le masque que sur le texte. L'arrière-plan du coup n'est plus affiché, mais c'est quelquefois le résultat cherché.

TEXTE
TEXTE

L'élément d'origine : un texte


Illustration de la propriété CSS mask - Le masque

Le masque (hachures)
un fichier PNG.
TEXTE
TEXTE

Le résultat : du texte hachuré.

Masques multiples.

Il est tout à fait possible d'appliquer plusieurs masques à un même élément. En effet, les propriétés relatives aux masques acceptent une valeur unique (un seul masque) ou une série de valeurs séparées par des virgules. Le nombre de masques utilisés est fixé par la propriété mask-image. L'exemple de syntaxe ci-dessous applique deux masques.

mask-image:url('chemin/fichier1.png'), url('chemin/fichier2.png);

Le premier masque cité dans mask-image est le plus au dessus ; les autres sont successivement placés en dessous. La valeur none est autorisée dans une série de masques : elle crée une couche sans masque.
Ainsi la syntaxe suivante :

mask-image: mask1, none, mask2, mask3;

Se traduit par l'empilage suivant :

Mask1
none
Mask2
Mask3
Element

Les autres propriétés relatives aux masques sont gérées par rapport à mask-image. Si le nombre de valeurs de la propriété est inférieur au nombre de masques définis par mask-image, les valeurs sont re-explorées à partir du début. Si le nombre de valeurs est supérieur à celui défini par mask-image, les dernières valeurs sont ignorées.

mask-image: mask1, mask2, mask3; mask-repeat: repeat; mask-position: center, left, center, right; Est équivalent à : mask-image: mask1, mask2, mask3; mask-repeat: repeat, repeat, repeat; mask-position: center, left, center;

La propriété mask-composite est particulièrement importante dans le cas de masques multiples : elle définit comment les masques doivent interagir entre eux. Est-ce que leurs effets s'ajoutent ? Est-ce que, au contraire, les effets doivent être soustraits, etc. Tout ceci est défini par mask-composite.

La propriété mask-composite a normalement besoin d'une valeur de moins que mask-image puisqu'elle combine les masques deux par deux. Si le nombre de valeurs est égal, la dernière valeur est ignorée.

La propriété mask-type n'accepte qu'une seule valeur (luminance ou alpha), il n'est donc pas possible de mélanger plusieurs types de masques avec cette propriété. Par contre la propriété mask-mode peut très bien accepter une série de valeurs lorsque plusieurs masques sont utilisés.

Animation de la propriété mask.

L'animation de la propriété mask est possible suivant n'importe lequel de ses paramètres. Nous proposons ci-dessous une animation des dimensions du masque, et une autre de sa position.

Animation de la propriété mask
Animation de la taille
du masque.
Animation de la propriété mask
Animation de la mode de la
position du masque.

Prise en charge de mask par les navigateurs.

La prise en charge de la propriété mask et de ses dérivées est maintenant correcte sur la plupart des navigateurs. Pour plus de précisions sur les fonctionnalités prises en charge et celles qui ne le sont pas, reportez-vous aux propriétés individuelles (mask-mode, mask-repeat, etc.).

Colonne 1
Support des techniques de masquage consistant à masquer un élément par une image ou une forme géométrique.

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.

1
Propriété
mask
Estimation de la prise en charge globale.
97%

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

  • Module CSS - Masquage - Niveau 1

    Ce module de spécification décrit deux moyens pour cacher partiellement ou totalement des portions d'éléments visuels : le masquage et le rognage.
    Le masquage consiste à utiliser un autre élément graphique ou une image comme masque.
    Le rognage décrit la région visible des éléments visuels. La région peut être décrite en utilisant certains éléments graphiques SVG ou des formes simples. Tout ce qui se trouve en dehors de cette région n'est pas rendu.

    Concernant mask 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

Voir aussi, au sujet des techniques de masquage.

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

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
Propriété résumée. Définit tous les paramètres d'un masque pour les bords d'un élément.
⚠
mask-border-mode
Définit suivant quel paramètre le masque doit agir (luminance, alpha).
⚠
mask-border-outset
Définit le décalage éventuel du masque de bords par rapport à l'élément.
⚠
mask-border-repeat
Définit le mode de répétition du masque pour les bords de l'élément.
⚠
mask-border-slice
Définit comment l'image utilisée comme masque de bords doit être découpée.
⚠
mask-border-source
Désigne l'image qui sera utilisée comme masque pour les bords de l'élément.
⚠
mask-border-width
Définit l'épaisseur sur laquelle le masque de bords agit.
mask-clip
Définit la zone concernée par le masquage.
mask-composite
Définit comment seront combinés les masques lorsque plusieurs sont appliqués sur un élément.
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-position-x
Définit la position horizontale du masque.
mask-position-y
Définit la position verticale 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.
mask-type
Définit quel paramètre du masque est utilisé pour masquer l'élément.