Je suis un débutant en SVG donc c'est probablement une question facile. J'essaye de faire un masque de SVG avec une forme simple de triangle à l'intérieur d'un rectangle. Ce que je veux atteindre est d'obtenir le rectangle réactif avec sa largeur, mais le triangle doit - obtenir une taille fixe - toujours au centre de la fenêtreCentre un élément d'un masque SVG
Vous comprendrez mieux avec mon extrait:
.header-arrow {
height: 70px;
}
svg {
height: inherit;
}
#arrow-down-alpha {
transform: translateX(calc(50vw - 130px/2));
}
<div class="header-arrow">
<svg width="100%">
<defs>
<mask id="myMask" x="0" y="0" width="100%" height="100%">
<rect fill="white" x="0" y="0" width="100%" height="100%" />
<polygon id="arrow-down-alpha" fill="black" x="00" y="0" width="165px" height="100%" points="55.91 37.8 111.81 0 0 0 55.91 37.8" />
</mask>
</defs>
<rect id="base-mask" mask="url(#myMask)" x="0" y="0" width="100%" height="100%" />
</svg>
</div>
C'est workning actuellement en chrome, mais le translateX (ou traduire) ne fonctionne pas dans Firefox et le bord. J'ai essayé d'utiliser l'attribut SVG de transformation, mais il semble que je ne puisse pas utiliser les valeurs de pourcentages. Je ne suis pas vraiment familier avec la viewbox mais je ne suis pas sûr que cela aidera dans ce cas.
Merci quand même pour toute sorte d'aide!
Je suis sûr que dupe. Essayez de trouver sur le premier. –
'x',' y', 'width' et' height' ne sont pas des attributs valides pour ''. –
Malheureusement, les nouveaux types d'unités CSS comme 'vw' ne sont pas bien pris en charge lorsqu'ils sont utilisés sur des éléments SVG. –