1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
---
title: <mask>
slug: Web/SVG/Element/mask
tags:
- Element
- Masque
- NeedsCompatTable
- SVG
- SVG Container
translation_of: Web/SVG/Element/mask
---
<div>{{SVGRef}}</div>
<p>L'élément <strong><code><mask></code></strong> définit un masque alpha. Ce masque peut par la suite être appliqué sur une forme en utilisant la propriété {{SVGAttr("mask")}}.</p>
<p>Le masque permet de rendre des zones de l'élément sur lequel est appliqué (semi-)transparentes. On peut par exemple créer un effet de fondu en utilisant un dégradé, ce que le détourage ({{SVGElement('clipPath')}}) ne permet pas.</p>
<div id="Example">
<div class="hidden">
<pre class="brush: css">html,body,svg { height:100% }</pre>
</div>
<pre class="brush: html"><svg viewBox="-10 -10 120 120">
<mask id="myMask">
<!-- Tous les pixels blancs sont visibles -->
<rect x="0" y="0" width="100" height="100" fill="white" />
<!-- Tous les pixels noirs sont invisibles -->
<path d="M10,35 A20,20,0,0,1,50,35 A20,20,0,0,1,90,35 Q90,65,50,95 Q10,65,10,35 Z" fill="black" />
</mask>
<polygon points="-10,110 110,110 110,-10" fill="orange" />
<!-- Avec ce masque, on "perfore" un trou en forme de coeur à l'intérieur du cercle -->
<circle cx="50" cy="50" r="50" mask="url(#myMask)" />
</svg></pre>
<p>{{EmbedLiveSample('Example', 100, 100)}}</p>
</div>
<h2 id="Attributs">Attributs</h2>
<dl>
<dt id="attr-cx">{{SVGAttr("height")}}</dt>
<dd>Définit la hauteur du masque.<br>
<small><em>Valeur</em>: <a href="/docs/Web/SVG/Content_type#Length"><strong><length></strong></a> ; Valeur par défaut: <code>120%</code>; <em>Animation</em>: <strong>oui</strong></small></dd>
<dt>{{SVGAttr("maskContentUnits")}}</dt>
<dd>Définit le système de coordonnées pour le contenu du <code><mask></code>.<br>
<small><em>Valeur</em>: <code>userSpaceOnUse</code>|<code>objectBoundingBox</code> ; <em>Valeur par défaut</em>: <code>userSpaceOnUse</code>; <em>Animation</em>: <strong>oui</strong></small></dd>
<dt>{{SVGAttr("maskUnits")}}</dt>
<dd>Définit le système de coordonnées pour les attributs {{SVGAttr("x")}}, {{SVGAttr("y")}}, {{SVGAttr("width")}} et {{SVGAttr("height")}} du <code><mask></code>.<br>
<small><em>Valeur</em>: <code>userSpaceOnUse</code>|<code>objectBoundingBox</code> ; <em>Valeur par défaut</em>: <code>objectBoundingBox</code>; <em>Animation</em>: <strong>oui</strong></small></dd>
<dt id="attr-cx">{{SVGAttr("x")}}</dt>
<dd>Définit la coordonnée de l'axe x du coin supérieur gauche du masque.<br>
<small><em>Valeur</em>: <a href="/docs/Web/SVG/Content_type#Coordinate"><strong><coordinate></strong></a> ; <em>Valeur par défaut</em>: <code>-10%</code>; <em>Animation</em>: <strong>oui</strong></small></dd>
<dt id="attr-cx">{{SVGAttr("y")}}</dt>
<dd>Définit la coordonnée de l'axe y du coin supérieur gauche du masque.<br>
<small><em>Valeur</em>: <a href="/docs/Web/SVG/Content_type#Coordinate"><strong><coordinate></strong></a> ; <em>Valeur par défaut</em>: <code>-10%</code>; <em>Animation</em>: <strong>oui</strong></small></dd>
<dt id="attr-cx">{{SVGAttr("width")}}</dt>
<dd>Définit la largeur du masque.<br>
<small><em>Valeur</em>: <a href="/docs/Web/SVG/Content_type#Length"><strong><length></strong></a> ; Valeur par défaut: <code>120%</code>; <em>Animation</em>: <strong>oui</strong></small></dd>
</dl>
<h3 id="Attributs_globaux">Attributs globaux</h3>
<dl>
<dt><a href="/fr/docs/Web/SVG/Attribute/Core">Attributs de base</a></dt>
<dd><small>Notamment: {{SVGAttr('id')}}</small></dd>
<dt><a href="/fr/docs/Web/SVG/Attribute/Styling">Attributs de style</a></dt>
<dd><small>{{SVGAttr('class')}}, {{SVGAttr('style')}}</small></dd>
<dt><a href="/fr/docs/Web/SVG/Attribute/Conditional_Processing">Attributs de traitement conditionnel</a></dt>
<dd><small>Notamment: {{SVGAttr('requiredExtensions')}}, {{SVGAttr('systemLanguage')}}</small></dd>
<dt><a href="/fr/docs/Web/SVG/Attribute/Presentation">Attributs de présentation</a></dt>
<dd><small>Notamment: {{SVGAttr('clip-path')}}, {{SVGAttr('clip-rule')}}, {{SVGAttr('color')}}, {{SVGAttr('display')}}, {{SVGAttr('fill')}}, {{SVGAttr('fill-opacity')}}, {{SVGAttr('fill-rule')}}, {{SVGAttr('filter')}}, {{SVGAttr('mask')}}, {{SVGAttr('opacity')}}, {{SVGAttr('shape-rendering')}}, {{SVGAttr('stroke')}}, {{SVGAttr('stroke-dasharray')}}, {{SVGAttr('stroke-dashoffset')}}, {{SVGAttr('stroke-linecap')}}, {{SVGAttr('stroke-linejoin')}}, {{SVGAttr('stroke-miterlimit')}}, {{SVGAttr('stroke-opacity')}}, {{SVGAttr('stroke-width')}}, {{SVGAttr("transform")}}, {{SVGAttr('vector-effect')}}, {{SVGAttr('visibility')}}</small></dd>
</dl>
<h2 id="Notes_d'usage">Notes d'usage</h2>
<p>{{svginfo}}</p>
<h2 id="Spécifications">Spécifications</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Spécification</th>
<th scope="col">Statut</th>
<th scope="col">Commentaire</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('CSS Masks', '#MaskElement', '<mask>')}}</td>
<td>{{Spec2('CSS Masks')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('SVG1.1', 'masking.html#Masking', '<mask>')}}</td>
<td>{{Spec2('SVG1.1')}}</td>
<td>Définition initiale</td>
</tr>
</tbody>
</table>
<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
<p>{{Compat("svg.elements.mask")}}</p>
<h2 id="Voir_aussi">Voir aussi</h2>
<ul>
<li>Élément de détourage: {{SVGElement("clipPath")}}</li>
<li>Propriétés CSS de masque: {{cssxref("mask")}}, {{cssxref("mask-image")}},{{cssxref("mask-mode")}}, {{cssxref("mask-repeat")}}, {{cssxref("mask-position")}}, {{cssxref("mask-clip")}}, {{cssxref("mask-origin")}}, {{cssxref("mask-composite")}}, {{cssxref("mask-size")}}, {{cssxref("pointer-events")}}</li>
</ul>
|