Comment utiliser viewbox lorsque la hauteur de svg est de changer dynamiquement
J'ai un redimensionnable div. Il dispose de deux intérieure divs. L'un de l'intérieur de la balise div est un élément svg.
Dans l'élément svg je suis ajout et suppression du contenu de manière dynamique, de sorte que chaque fois que je ajouter quelque chose dans mon fichier svg. Je l'augmentation de sa hauteur par l'ajout de 20px et quand j'ai enlever je soustrais la hauteur de 20px. Quand mon svg hauteur devenir plus grand que son parent div une barre de défilement s'affiche dans le div parent. De même barre de défilement est supprimée lorsque svg hauteur est inférieure div parent.
Le problème commence quand je ne le redimensionnement. J'ai ajouté un viewbox option dans mon fichier svg pour le redimensionnement. Mais quand j'augmente la taille de certains de mes éléments svg ne sont pas visibles.
Et quand je diminue la taille de mon fichier svg placés à une position inférieure en laissant un espace vide.
Son tout foiré dans mon esprit que la façon de traiter svg position/hauteur avec viewbox propriété.
J'ai essayé de faire un violon pour simuler le comportement d'une certaine manière. Mais ici, les éléments svg ne sont pas de l'ajout de façon dynamique et le svg hauteur est constante.
Toute aide sera appréciée
ok.Je redimensionner une div
Son genre, de même que le violon lien que j'ai indiqué.
Mise à jour, vous pouvez essayer une autre approche
OriginalL'auteur A_user | 2012-07-27
Vous devez vous connecter pour publier un commentaire.
DERNIÈRE MISE À JOUR:
Le plus important si vous allez utiliser SVG, il est préférable de se familiariser avec les spec ou de la lecture définitive du guide "SVG Essentials" par J. Eisenberg, la cause n'est pas une chose banale que vous pourriez penser au premier abord.
Alors si j'ai bien compris vous avez droit, il y a une autre approche jsFiddle.
D'abord, réglez correctement la valeur de la
viewBox
attribut. Dans votre exemple, devrait êtreviewBox="0 0 130 220"
de sorte que la totalité de votre contenu visible (vous devez spécifier au moins 220 comme le dernier numéro de la cause de votre dernier groupe<g>
est traduit c'est à dire que c'est le système de coordonnées de déplacer vers le bas de 200 unités, si vous ne le faites pas, votre contenu sera pas visible car il est bien au-delà de la plus haute y-point de votre viewbox, qui, dans votre jsfiddle est fixé à 70).Deuxième, spécifiez la valeur correcte pour
preserveAspectRatio
qui devrait êtrepreserveAspectRatio="xMinYMax meet"
, ce qui signifie (avec l'aimable autorisation de la "SVG Essentials" par J. Eisenberg):meet
moyens de satisfaire le contenu, pas de trancher, si elle ne rentre pas.Troisièmement, si vous allez à ajouter des éléments à la base de votre svg, vous devrez changer le
viewBox
valeur en conséquence, la cause si vous insérez dans ce qch comme:qu'il va se produire beyound votre viewBox, qui a un max de y point à 220 (si vous définissez comme je l'ai dit plus tôt)
Pour l'instant espère que ça aide, faites le moi savoir.
VIEUX TRUCS
supprimer
style="height:200px"
de votre svgAlors si vous avez besoin de la hauteur, vous pouvez modifier dynamiquement la hauteur de votre
svg
'#resize'
- est de laid
de l'emballage de lasvg
Je suis maintenant très confuse de ce que vous voulez. Vous avez spécifié
viewbox
attr sur lesvg
. Cela signifie que seulement une partie de votresvg
sera visible. Essayez de supprimerviewbox
et voir si le résultat est satisfaisant pour vous.- Il alors être visible et normalement ajusté à la div parent
Merci beaucoup pour votre aide et vos conseils, mais.....il va faire mon svg hauteur = div hauteur....dans le cas que j'ai à ajouter plus de contenu svg qu'il ne sera pas visible
Hmm...ok merci beaucoup pour votre aide.mais je suis nouveau, je ne sais pas ce qu'est un wrapper
essayez de supprimer
viewbox
peut-être que c'est ce dont vous avez besoinquand j'enlève la viewbox puis sur le redimensionnement du texte est très petit 🙁
OriginalL'auteur user907860