clip-path
La propriété clip-path
empêche une portion d'un élément d'être affichée en définissant une région de rognage. Seule une zone spécifique de l'élément sera affichée. La zone de rognage est un chemin défini avec une URL faisant référence à un SVG externe ou en ligne ou grâce à une fonction de forme comme circle()
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Note : La propriété clip-path
remplace la propriété clip
désormais dépréciée.
Syntaxe
/* Valeurs avec un mot-clé */
clip-path: none;
/* Valeurs pointant vers une image */
/* Type <clip-source> */
clip-path: url(resources.svg#c1);
/* Valeurs de boîte */
clip-path: fill-box;
clip-path: stroke-box;
clip-path: view-box;
clip-path: margin-box;
clip-path: border-box;
clip-path: padding-box;
clip-path: content-box;
/* Valeurs géométriques */
/* avec une notation fonctionnelle */
clip-path: inset(100px 50px);
clip-path: circle(50px at 0 100px);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
clip-path: path('M0.5,1 C0.5,1,0,0.7,0,0.3 A0.25,0.25,1,1,1,0.5,0.3 A0.25,0.25,1,1,1,1,0.3 C1,0.7,0.5,1,0.5,1 Z');
/* Combinaison boîte & géométrie */
clip-path: padding-box circle(50px at 0 100px);
/* Valeurs globales */
clip-path: inherit;
clip-path: initial;
clip-path: unset;
La propriété clip-path
est définie avec une ou plusieurs des valeurs listées ci-après.
Valeurs
url()
- Une URL qui fait référence à un élément contenant le chemin de rognage.
inset()
,circle()
,ellipse()
,polygon()
- Une fonction
<basic-shape>
. Une telle forme utilise la valeur<geometry-box>
pour déterminer la taille et la position de la forme. Si aucune boîte de géométrie n'est indiquée, c'est la boîte de bordure (border-box
) qui sera utilisée comme boîte de réference. <geometry-box>
- Si cette valeur est combinée avec une valeur
<basic-shape>
, elle définira la boîte de référence dans laquelle placer la forme. Si elle est utilisée seule, ce sont les bords de la boîte (ainsi que les éventuels coins arrondis définis avecborder-radius
) qui sont utilisés comme ligne de rognage. Cette composante peut prendre les valeurs suivante :fill-box
- La boîte englobant (bounding box) est utilisée comme boîte de référence.
stroke-box
- La boîte de contour de la boîte englobante est utilisée comme boîte de référence.
view-box
- La zone d'affichage SVG la plus proche est utilisée comme boîte de référence. Si un attribut
viewBox
est défini pour l'élément qui crée la zone d'affichage SVG, la boîte de référence est située à l'origine du système construit parviewBox
et les dimensions de la boîte de référence sont les valeurs de hauteur et de largeur de l'attributviewBox
. margin-box
- La boîte de marge est utilisée comme boîte de référence
border-box
- La boîte de bordure est utilisée comme boîte de référence
padding-box
- La boîte de remplissage (padding) est utilisée comme boîte de référence
content-box
- La boîte de contenu est utilisée comme boîte de référence.
none
- Aucun chemin de rognage n'est créé.
Note : Si la valeur calculée est différente de none
, cela entraînera la création d'un nouveau contexte d'empilement (de la même façon qu'opacity
avec des valeurs différentes de 1).
Syntaxe formelle
<clip-source> | [ <basic-shape> || <geometry-box> ] | noneoù
<clip-source> = <url>
<basic-shape> = <inset()> | <circle()> | <ellipse()> | <polygon()> | <path()>
<geometry-box> = <shape-box> | fill-box | stroke-box | view-boxoù
<inset()> = inset( <length-percentage>{1,4} [ round <'border-radius'> ]? )
<circle()> = circle( [ <shape-radius> ]? [ at <position> ]? )
<ellipse()> = ellipse( [ <shape-radius>{2} ]? [ at <position> ]? )
<polygon()> = polygon( <fill-rule>? , [ <length-percentage> <length-percentage> ]# )
<path()> = path( [ <fill-rule>, ]? <string> )
<shape-box> = <box> | margin-boxoù
<length-percentage> = <length> | <percentage>
<shape-radius> = <length-percentage> | closest-side | farthest-side
<position> = [ [ left | center | right ] || [ top | center | bottom ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]? | [ [ left | right ] <length-percentage> ] && [ [ top | bottom ] <length-percentage> ] ]
<fill-rule> = nonzero | evenodd
<box> = border-box | padding-box | content-box
Exemples
Comparaison entre HTML et SVG
Exemple complet
HTML
<img id="clipped" src="https://mdn.mozillademos.org/files/12668/MDN.svg"
alt="MDN logo">
<svg height="0" width="0">
<defs>
<clipPath id="cross">
<rect y="110" x="137" width="90" height="90"/>
<rect x="0" y="110" width="90" height="90"/>
<rect x="137" y="0" width="90" height="90"/>
<rect x="0" y="0" width="90" height="90"/>
</clipPath>
</defs>
</svg>
<select id="clipPath">
<option value="none">none</option>
<option value="circle(100px at 110px 100px)">circle</option>
<option value="url(#cross)" selected>cross</option>
<option value="inset(20px round 20px)">inset</option>
<option value="path('M 0 200 L 0,110 A 110,90 0,0,1 240,100 L 200 340 z')">path</option>
</select>
CSS
#clipped {
margin-bottom: 20px;
clip-path: url(#cross);
}
Résultat
Spécifications
Spécification | État | Commentaires |
---|---|---|
CSS Masking Module Level 1 La définition de 'clip-path' dans cette spécification. |
Candidat au statut de recommandation | Extension aux élément HTML. clip-path remplace la propriété clip désormais dépréciée. |
Scalable Vector Graphics (SVG) 1.1 (Second Edition) La définition de 'clip-path' dans cette spécification. |
Recommendation | Définition initiale (s'applique uniquement aux éléments SVG) |
Valeur initiale | none |
---|---|
Applicabilité | tous les éléments ; en SVG, cela s'applique aux éléments conteneurs à l'exception des éléments defs et des éléments graphiques |
Héritée | non |
Pourcentages | refer to reference box when specified, otherwise border-box |
Valeur calculée | comme spécifié mais avec les valeurs url rendues absolues |
Type d'animation | oui, comme spécifié pour basic-shape , sinon, non |
Compatibilité des navigateurs
BCD tables only load in the browser