Per specificare le coordinate all'interno dell'immagine SVG indipendentemente dalla dimensione ridimensionata dell'immagine, utilizzare l'attributo viewBox
sull'elemento SVG per definire cosa è il riquadro di delimitazione dell'immagine nel sistema di coordinate dell'immagine e utilizzare il width
e height
attributi per definire quale larghezza o altezza sono rispetto alla pagina contenente.
Per esempio, se avete la seguente:
<svg>
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
Si renderà come 10px da 20px triangolo:
Ora, se si imposta solo la larghezza e l'altezza, che cambierà la dimensione dell'elemento SVG, ma non in scala triangolo:
<svg width=100 height=50>
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
Se si imposta la casella di visualizzazione, ciò provoca la trasformazione dell'immagine in modo tale che la casella specificata (nel sistema di coordinate dell'immagine) venga ridimensionata per adattarsi alla larghezza e all'altezza specificate (nel sistema di coordinate della pagina). Per esempio, per scalare il triangolo di essere 100px per 50px:
<svg width=100 height=50 viewBox="0 0 20 10">
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
Se si desidera ridimensionare fino alla larghezza della finestra HTML:
<svg width="100%" viewBox="0 0 20 10">
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
Si noti che per impostazione predefinita, le proporzioni vengono mantenute.Quindi, se si specifica che l'elemento deve avere una larghezza di 100%, ma un'altezza di 50px, sarà effettivamente scalare solo fino all'altezza di 50px (a meno che non si dispone di una finestra molto stretta):
<svg width="100%" height="50px" viewBox="0 0 20 10">
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
Se si vuole realmente di allungare orizzontalmente, disattivare aspetto conservazione rapporto con preserveAspectRatio=none
:
<svg width="100%" height="50px" viewBox="0 0 20 10" preserveAspectRatio="none">
<polygon fill=red stroke-width=0
points="0,10 20,10 10,0" />
</svg>
(notare che mentre nei miei esempi Io uso la sintassi che lavora per incorporamento HTML, per includere gli esempi come un'immagine in StackOverflow sto invece l'incorporamento all'interno di un altro formato SVG, quindi ho bisogno di utilizzare la sintassi XML valido)
prova pre centesimi in larghezza e altezze. – ncm
@ncm Come si farebbe con JS? – Mawg