Mise à l'échelle des graphiques SVG à l'aide de CSS
Publié: 2023-02-03Lorsqu'il s'agit de créer des graphiques vectoriels pour le Web, il n'y a vraiment qu'un seul format que vous devez connaître : SVG. Et bien qu'il soit possible de créer des graphiques SVG simples en utilisant du code, il est beaucoup plus facile de travailler avec eux en utilisant CSS. Dans cet article, nous allons voir comment mettre à l'échelle des graphiques SVG à l'aide de CSS. Nous passerons également en revue certains des avantages de l'utilisation de SVG par rapport à d'autres formats, tels que PNG ou JPEG.
L'utilisation de graphiques vectoriels (SVG) à l'échelle. Amelia Bellamy-Royds partage un guide de mise à l'échelle épique pour la mise à l'échelle de SVG. Bien que la mise à l'échelle des graphiques raster soit plus difficile, elle a le potentiel d'ouvrir de nouvelles possibilités. Les débutants peuvent avoir du mal à comprendre comment le faire se comporter comme ils le souhaitent. Les images Anaster sont clairement définies par leur format d'image, qui est le rapport entre la largeur et la hauteur dans le texte. Si vous forcez une image raster à être plus petite que sa hauteur et sa largeur intrinsèques, elle sera déformée ; cependant, si vous le forcez à être plus grand, il se déformera. les SVG en ligne seront dessinés à la taille spécifiée par le code, quelle que soit la taille du canevas spécifiée dans le code.
ViewBox, la dernière pièce, est responsable de la conception de graphiques vectoriels pouvant être mis à l'échelle. L'élément viewBox est un composant de l'élément >svg>. La valeur est une liste de quatre nombres séparés par des espaces ou des virgules, chacun représentant un aspect différent de la valeur. x et y déterminent le système de coordonnées pour le coin supérieur gauche de la fenêtre. Le nombre de px/coordonnées à mettre à l'échelle est appelé la hauteur. Si vous spécifiez des dimensions qui ne correspondent pas au rapport d'aspect, l'image ne sera ni étirée ni déformée. Il est possible d'aligner d'autres types d'images en utilisant la nouvelle propriété CSS object-fit.
Vous pouvez également définir le paramètre preserveRatioAspect="none" pour redimensionner votre image à la même taille qu'une image raster. Vous pouvez déterminer la largeur et la hauteur de l'image à l'aide d'images raster, et vous pouvez également faire correspondre l'autre échelle à l'image. Comment sva génère-t-il des données avec des graphiques vectoriels ? Cela se complique avec l'âge. Si vous souhaitez redimensionner automatiquement une image dans un fichier *.img, pensez à utiliser un fichier *. Vous pouvez modifier le rapport d'aspect d'un élément en ajustant sa hauteur et sa marge à l'aide de diverses propriétés CSS. Les autres navigateurs définiront automatiquement la taille par défaut de l'image 300*150 pour les images avec des viewBoxes sans spécifier le comportement.
Il est possible de redimensionner une image pour l'adapter à l'intérieur de la viewBox en utilisant les navigateurs Blink/Firefox les plus récents. Ces navigateurs utiliseront les mêmes tailles par défaut, que vous spécifiiez la hauteur ou la largeur. Un élément conteneur, par exemple, est la méthode la plus simple pour le SVG en ligne, ainsi que pour les autres éléments remplacés. La hauteur officielle sera de zéro dans un graphique en ligne et svg. Lorsque la valeur preserveRatioAspect est définie sur true, le graphique sera réduit à rien. Au lieu d'étirer vos graphiques, vous devez souligner qu'ils s'étendent jusqu'à la zone de rembourrage que vous avez soigneusement mise de côté pour obtenir le rapport d'aspect approprié. Les attributs de viewBox et de preserveRatio sont extrêmement flexibles. Les éléments <svg> imbriqués, chacun avec leurs propres attributs de mise à l'échelle, peuvent être utilisés pour séparer les parties de votre échelle graphique. Cette méthode vous permet de créer un graphique d'en-tête à la fois suffisamment long et plat pour remplir un écran large sans être excessivement haut.
Svg peut-il être mis à l'échelle avec CSS?

Vous pouvez modifier les attributs de hauteur et de largeur du *svg* sur le fichier *svg* si vous le souhaitez. Vous pouvez utiliser cette règle pour annuler les dimensions et les proportions que vous spécifiez dans votre code, ainsi que pour faire de la partie en ligne de svg la hauteur par défaut.
Étant donné que les propriétés CSS width et height sont définies sur false, vous ne pouvez pas mettre à l'échelle les images SVG . Étant donné que les icônes ont une hauteur fixe dans leur forme, l'augmentation de la largeur de l'img ne les rendra pas plus grandes si la hauteur est restreinte. La propriété CSS transform vous permet de faire pivoter, mettre à l'échelle, incliner et traduire des éléments. ViewBox=0 0 Je ne suis pas sûr que [w] [h] soit correct pour certains svgs, je veux dire le dubble zéro. Les deux premiers chiffres déterminent l'emplacement de l'icône dans une boîte (si elle est pleine largeur ou pleine hauteur) et si l'icône est carrée (car les icônes carrées ne fonctionnent que si elles sont pleine largeur ou pleine hauteur).
Vous pouvez le faire de différentes manières. La façon la plus simple de créer un nouveau SVG avec des dimensions est de l'exporter en tant qu'image. Il peut être nécessaire de créer des dimensions spécifiques, ce qui peut prendre du temps et ne pas être accepté par tous les navigateurs. Alternativement, vous pouvez utiliser le générateur responsive SVG. L'outil crée automatiquement des fichiers SVG réactifs, en fonction de vos dimensions et des requêtes multimédias que vous spécifiez, quelle que soit votre requête multimédia. L'option est bonne si vous savez ce que vous faites, mais ce n'est pas toujours facile à mettre en œuvre. Cependant, la meilleure option consiste à utiliser les attributs inclus dans Illustrator CC, tels que la largeur et la hauteur. Si vous spécifiez une taille différente, votre SVG sera toujours réactif dans tous les navigateurs. Cette étape n'a pas besoin d'être effectuée sur un ordinateur si vous êtes pressé ou si vous avez un grand nombre de SVG. Vous pouvez commencer à exporter des fichiers SVG réactifs directement depuis Illustrator CC.
Comment changer la largeur et la hauteur d'une image SVG ?

Comment puis-je redimensionner une image à l'aide de SVG ? Avant de pouvoir sélectionner un fichier à enregistrer au format SVG, vous devez d'abord ajouter un fichier image SVG. Faites glisser ou déposez votre fichier image dans la zone blanche et sélectionnez un fichier. Dans cette étape, vous devez ajuster les paramètres de redimensionnement, puis cliquer sur le bouton Redimensionner. Ce n'est qu'après la fin du processus que vous pourrez télécharger vos résultats.
C'est très amusant de transformer une image en œuvre d'art. Ce n'était pas facile, mais cela en valait la peine. Vous avez deux options pour redimensionner une image SVG. Si vous souhaitez modifier la taille ou la hauteur d'un fichier XML, cliquez sur l'étiquette XML. Vous pouvez démarrer le fichier en utilisant l'éditeur de texte. Vous devriez voir les lignes de code ci-dessous. CSS est une autre solution. Cependant, en spécifiant ''largeur'' et ''hauteur'', vous ne modifiez pas la situation.
Svg peut-il être étiré ?
Lorsqu'une image SVG de longueur fixe est créée, elle est traitée de la même manière qu'une image raster de même taille. Si vous utilisez CSS pour étirer votre SVG à un format d'image différent, assurez-vous d'avoir inclus preserveRatio=”none” dans le fichier.svg.
L'importance des graphiques vectoriels évolutifs
Pour créer des graphiques petits et grands, vous pouvez utiliser le format graphique vectoriel SVG . En d'autres termes, les attributs de hauteur et de largeur de l'élément SVG peuvent ne pas spécifier de pixels ; à la place, n'importe laquelle de plusieurs unités peut être utilisée. La qualité d'un SVG peut ainsi être maintenue sans perdre aucun aspect. En ce qui concerne la taille de l'image et le type d'affichage, les différences entre ces deux éléments ne sont pas pertinentes avec les SVG.
Les images SVG peuvent-elles être mises à l'échelle ?
Oui, les images SVG peuvent être mises à l'échelle. En effet, les images SVG sont des images vectorielles, ce qui signifie qu'elles sont constituées d'une série de lignes et de courbes plutôt que de pixels. Cela signifie qu'ils peuvent être agrandis ou réduits sans perte de qualité.

Les images peuvent être recadrées et mises à l'échelle à l'aide du logiciel Recadrage. Lorsque vous utilisez des documents SVG , c'est simple à faire. Cet extrait CSS sera remplacé par un extrait SVG. Nous utiliserons les attributs viewBox et AspectRatio pour recadrer, mettre à l'échelle et positionner les images dans cet article. Vous n'aurez aucun problème à utiliser ces attributs, alors n'ayez pas peur de les essayer. Vous voulez que l'utilisateur puisse télécharger n'importe quelle image de taille ou de rapport d'aspect qu'il souhaite. Le recadrage et la mise à l'échelle des images dans une boîte ajustée sont facilités par les propriétés object-fit et object-position.
Tous les navigateurs les plus récents, y compris Microsoft Edge 16 et Opera Mini, le prennent en charge, bien que ce dernier nécessite le préfixe -o-. PreserveAspectRatio peut être utilisé pour modifier la position, la taille et l'échelle d'un viewBox, tout comme object-fit et object-position. Par exemple, supposons que nous ayons un carré et une viewBox qui ont des proportions différentes (2:1). D'autre part, l'échelle est utilisée pour maintenir le rapport d'aspect de la viewBox tout en réduisant sa taille, et une partie du contenu est supprimée (d'où l'effet de découpage). Il comprend 19 valeurs, dont aucune ne détermine l'espace fourni par chaque élément. Le comportement par défaut du navigateur est de positionner à la fois l'image et la viewBox de manière à ce qu'elles soient complètement visibles depuis la fenêtre lors du remplacement de l'élément par une image et en faisant correspondre le rapport d'aspect de cette image à la viewBox. Changer la valeur de preserveAspectRatio peut vous aider à déterminer quel aspect de l'image change en fonction de sa position et de son échelle dans le SVG.
CSS object-fit et object-position peuvent être utilisés pour recadrer et redimensionner les images . Vous ne pouvez utiliser ces propriétés que dans la version la plus récente de ME Edge, ainsi que dans n'importe quel navigateur moderne. Lorsque vous ajoutez un >svg à une image, cela vous permet de prendre en charge Internet Explorer 9.
Les graphiques qui nécessitent une mise à l'échelle ou une correction sans perte de clarté sont idéaux pour l'utilisation de SVG. Il est également relativement simple à utiliser, ce qui le rend adapté aux écrans plus petits, ce qui a peu d'impact sur le temps de chargement. De plus, les graphismes sont animés, ce qui leur donne une sensation plus dynamique.
Transformation SVG=échelle
La transformation d'échelle vous permet de redimensionner vos éléments SVG . Vous pouvez augmenter ou diminuer la taille de vos éléments en utilisant un nombre positif ou négatif. La transformation d'échelle prend deux paramètres : la coordonnée x et la coordonnée y.
Les fonctions de transformation peuvent être utilisées pour manipuler des éléments SVG de la même manière que les transformations HTML. Certaines choses fonctionnent différemment sur les éléments SVG et sur les éléments HTML. Nous ne pouvons pas, par exemple, traduire des fonctions en utilisant des valeurs % (les valeurs % ne fonctionneront pas non plus pour les transformations CSS), ni faire pivoter ou incliner des angles en utilisant des degrés. Le point auquel les éléments HTML forment leurs coordonnées correspond à 50 % des coordonnées de l'élément. Dans le cas SVG , il y a un point 0 0 sur le canevas. Lorsqu'une transformation de rotation, d'échelle ou d'inclinaison se produit, les résultats seront différents pour différentes origines. Lorsqu'une transformation de traduction est appliquée à l'un de nos éléments, la transformation se déplace avec lui.
Pour les éléments 2D, nous avons trois fonctions de traduction disponibles : translateX(tx), translateY(ty) et translate(tx[, ty). Dans chaque cas, les directions x et y sont utilisées comme indiqué par les coordonnées système de l'élément. La troisième fonction de translation déplace l'élément de tx le long des axes x et y. La rotation des éléments et leurs systèmes de coordonnées relient les éléments à leurs origines fixes. La valeur de l'angle peut être exprimée en degrés (degrés), en radians (radians), en tours (tours) ou en grades (diplômés). Nous pourrions également utiliser la valeur calc () (par exemple, quelque chose comme 25turn - 30deg), mais cela ne fonctionne que dans Chrome 38/35 pour le moment. La fonction de rotation peut être exécutée avec la valeur d'angle calc() dans Firefox 59 et versions ultérieures.
Si nous définissons cette valeur dans notre CSS, nous pouvons utiliser les paramètres x et y pour émuler leur utilisation. Lors de l'utilisation d'un attribut de transformation SVG , l'élément et ses coordonnées système sont simplement pivotés autour du point spécifié par les deuxième et troisième arguments de la fonction rotate(). Pour inverser la rotation dans cet exemple, faites pivoter (-45 140 105) plutôt que de faire pivoter (-45). Nous spécifions simplement un point fixe différent pour chaque rotation d'un élément de 90 degrés dans le coin inférieur droit et de 90 degrés dans le coin supérieur droit. Comment puis-je obtenir le même effet avec les transformations CSS ? Dans la première rotation, il est simple de définir l'origine de la transformation en bas à droite, mais qu'en est-il de la deuxième rotation ? Si nous l'enchaînons à nouveau après qu'il a déjà été tourné de 90 degrés, il se répète simplement.
La transformation d'échelle est déterminée par la position de l'origine du système dans les coordonnées. Un facteur d'échelle de (-1, 1) agrandit un élément lorsqu'il se contracte, tandis qu'un facteur d'échelle en dehors de la plage (-1, 1) l'agrandit lorsqu'il se contracte. La mise à l'échelle directionnelle est définie comme la différence des facteurs de mise à l'échelle entre 1 et 2. Par conséquent, nous pouvons définir des origines de transformation et des transformations de chaînage dans les deux cas. La dérive déforme l'élément de la même manière que la translation et la rotation, transformant les carrés en cercles et les cercles en parallélogrammes. L'angle d'inclinaison est défini comme l'angle entre les positions finale et initiale de l'axe après l'application de la transformation. Dans l'intervalle [0*, 90*], une valeur de même signe que la coordonnée inchangée dans la valeur initiale est ajoutée suite à un angle d'inclinaison positif.
Lorsqu'une inclinaison est effectuée le long de l'axe x, la coordonnée x reste constante pour tout point de notre élément, tandis que la coordonnée y change d'une quantité d en fonction de l'angle d'inclinaison. Lorsqu'un élément s'incline, le résultat est déterminé par sa position au point d'origine de son système de coordonnées. Deux transformations obliques le long du même axe produisent des résultats différents selon l'origine de la transformation. Le cas HTML (à gauche) et le cas SVG (à droite) sont illustrés dans la figure ci-dessus. Alors que les angles sont de 60 degrés dans les deux cas, le signe de la coordonnée y dans le coin supérieur droit les distingue. L'angle, qui est une valeur unitaire dans la propriété CSS transform, est utilisé pour convertir une valeur en une transformation. Les degrés (degrés), les radians (rads), les tours (tours) et les grades (grades) peuvent tous être exprimés comme ceux-ci, ou peuvent même être combinés avec calc(), dans certains cas.
Une transformation peut être utilisée pour faire pivoter, mettre à l'échelle et incliner un élément, tout comme un élément HTML. Par exemple, nous pouvons obtenir un résultat lorsque nous utilisons des transformations chaînées comme valeur d'un attribut SVG dans IE. C'est pourtant laid. Pourquoi n'y a-t-il pas un moyen plus simple de le faire ? Dans ce code, nous avons trois formes polygonales appelées étoiles. Dans la démo ci-dessous, vous pouvez voir comment ils sont positionnés par rapport à l'origine du canevas (0 0). Dans le code ou en survolant les paires x,y, vous pouvez trouver quels points correspondent à quelles paires. En d'autres termes, nous voulons que chaque étoile tourne d'une manière différente - disons qu'elles ont un angle aléatoire et que leur indice a un angle spécifique.