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
|
---
title: <clipPath>
slug: Web/SVG/Element/clipPath
tags:
- Element
- SVG
translation_of: Web/SVG/Element/clipPath
---
<div>{{SVGRef}}</div>
<p>L'élément <a href="/fr/docs/Web/SVG">SVG</a> <strong><code><clipPath></code></strong> définit un détourage. Ce détourage peut par la suite être appliqué sur une forme en utilisant la propriété {{SVGAttr("clip-path")}}.</p>
<p>Le détourage limite la zone dans laquelle l'élément sur lequel il est appliqué sera dessiné. Autrement dit, les parties de l'élément en dehors de la forme créée par le détourage ne seront pas affichées.</p>
<div id="Example">
<div class="hidden">
<pre class="brush: css">html,body,svg { height:100% }</pre>
</div>
<pre class="brush: html"><svg viewBox="0 0 100 100">
<clipPath id="myClip">
<!-- La forme créée par le détourage est un simple cercle. -->
<circle cx="40" cy="35" r="35" />
</clipPath>
<!-- Le coeur sans détourage, pour référence -->
<path id="heart" d="M10,30 A20,20,0,0,1,50,30 A20,20,0,0,1,90,30 Q90,60,50,90 Q10,60,10,30 Z" />
<!--
Le coeur avec détourage.
Seule la partie à l'intérieur du cercle est visible.
-->
<use clip-path="url(#myClip)" xlink:href="#heart" fill="red" />
</svg></pre>
<pre class="brush: css">/* Animation CSS pour les navigateurs *
* qui implémentent la propriété de géométrie r. */
@keyframes openYourHeart {from {r: 0} to {r: 60px}}
#myClip circle {
animation: openYourHeart 15s infinite;
}</pre>
<p>{{EmbedLiveSample('Example', 100, 100)}}</p>
</div>
<p>Sur le plan conceptuel, un détourage est un peu comme une zone d'affichage personnalisée pour l'élément sur lequel il est appliqué. Cela va limiter la zone dans laquelle l'élément est affiché, sans affecter sa géométrie (position, taille, etc).</p>
<p>La zone de sélection d'un élément détouré (c'est à dire un élément qui référence un <code><clipPath></code> via la propriété {{SVGAttr("clip-path")}}, ou un de ses enfant) reste la même, comme s'il n'était pas tronqué.</p>
<p>Par défaut, les événements de pointeur ne sont pas déclenchés sur les régions détourées (non visibles) d'une forme. Par exemple, un cercle avec un rayon de 10 qui est détouré à un cercle de rayon 5, ne recevra pas d'événement "click" en dehors de ce rayon de 5. Ce comportement peut être modifié avec la propriété {{cssxref("pointer-events")}}.</p>
<h2 id="Attributs">Attributs</h2>
<dl>
<dt>{{SVGAttr("clipPathUnits")}}</dt>
<dd>Cet attribut définit le système de coordonnées pour le contenu de l'élément <code><clipPath></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>
</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", "#ClipPathElement", "<clipPath>")}}</td>
<td>{{Spec2("CSS Masks")}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName("SVG1.1", "masking.html#EstablishingANewClippingPath", "<clipPath>")}}</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.clipPath")}}</p>
<h2 id="Voir_aussi">Voir aussi</h2>
<ul>
<li>Élément de masquage: {{SVGElement("mask")}}</li>
<li>Quelques propriétés CSS: {{cssxref("clip-path")}}, {{cssxref("pointer-events")}}</li>
</ul>
|