W3docs

Proprietà CSS stroke-dasharray

Come usare la proprietà CSS stroke-dasharray per creare linee tratteggiate su elementi SVG. Scopri i valori con esempi pratici.

La proprietà stroke-dasharray controlla il pattern di trattini e spazi usato per disegnare il contorno (stroke) di una forma SVG. Invece di una linea continua, il tratto viene suddiviso in alternanza di trattini e spazi, permettendo di disegnare bordi tratteggiati e punteggiati, separatori e le linee utilizzate nelle animazioni di disegno del tratto.

Questa pagina illustra come viene interpretato l'elenco dei valori, la regola di ripetizione per conteggi dispari che trae in inganno la maggior parte delle persone, i casi d'uso più comuni e come stroke-dasharray interagisce con le proprietà correlate.

Come funziona l'elenco dei valori

stroke-dasharray accetta none oppure un <dasharray> — un elenco di lunghezze o percentuali separate da virgole e/o spazi. I numeri vengono letti in ordine come trattino, spazio, trattino, spazio…, e l'intera sequenza si ripete lungo il percorso:

  • Un solo valore4 disegna un trattino di 4, poi uno spazio di 4, e si ripete. Trattini e spazi uguali.
  • Due valori8 2 disegna un trattino di 8 unità, uno spazio di 2 unità, poi si ripete. Questa è la forma più comune.
  • Più valori4 1 2 1 cicla attraverso trattino 4, spazio 1, trattino 2, spazio 1, poi ricomincia.

Il trabocchetto principale: se si fornisce un numero dispari di valori, l'elenco viene duplicato per renderlo pari. Quindi 5 3 2 si comporta come 5 3 2 5 3 2, il che significa trattino 5, spazio 3, trattino 2, trattino 5, spazio 3, trattino 2 — i ruoli di ciascun numero si invertono al secondo passaggio. Usa un conteggio pari ogni volta che vuoi un pattern ripetuto e prevedibile.

Un valore 0 per un trattino produce un punto quando combinato con stroke-linecap: round, che è il modo in cui si creano le linee punteggiate arrotondate.

Casi d'uso comuni

  • Bordi tratteggiati e punteggiati o separatori su icone e illustrazioni, dove un CSS border non può seguire un percorso curvo o diagonale.
  • Animazioni di disegno ("self-drawing"), dove stroke-dasharray è impostato sulla lunghezza del percorso e stroke-dashoffset viene animato da quella lunghezza fino a 0, facendo apparire il tratto come se si disegnasse da solo.
  • Anelli di progresso e caricatori, dove animare il trattino e l'offset rivela un tratto circolare.

Gli stili inline CSS sovrascrivono gli attributi di presentazione SVG. Per esempio, uno stile inline stroke-dasharray: 4; ha la precedenza sull'attributo di presentazione stroke-dasharray="4".

Informazione

La proprietà stroke-dasharray può essere usata sia come proprietà CSS che come attributo di presentazione SVG. Può essere applicata a qualsiasi elemento, ma influisce solo sui seguenti elementi: <altGlyph>, <circle>, <ellipse>, <path>, <line>, <polygon>, <polyline>, <rect>, <text>, <textPath>, <tref> e <tspan>.

Valore inizialenone
Si applica aElementi di forma e contenuto testuale.
EreditatoSì.
AnimabileNo.
VersioneSpecifica SVG 1.1
Sintassi DOMObject.strokeDasharray = "none";

Sintassi

Sintassi CSS stroke-dasharray

stroke-dasharray: none | <dasharray> | initial | inherit;

Esempio della proprietà stroke-dasharray:

Esempio di codice CSS stroke-dasharray

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-dasharray property example</h2>
    <svg height="80" width="300">
      <g fill="none" stroke="black" stroke-width="4">
        <path stroke-dasharray="6,6" d="M5 20 l215 0" />
        <path stroke-dasharray="8,10" d="M5 40 l215 0" />
        <path stroke-dasharray="18,10,6,7,7,10" d="M5 60 l215 0" />
      </g>
    </svg>
  </body>
</html>

Risultato

CSS stroke-dasharray

Esempio della proprietà stroke-dasharray con l'elemento <line>:

Altro esempio di codice CSS stroke-dasharray

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-dasharray property example</h2>
    <svg viewBox="0 0 30 10" xmlns="http://www.w3.org/2000/svg">
      <line x1="0" y1="1" x2="30" y2="1" stroke="#1c98c9" />
      <line x1="0" y1="3" x2="30" y2="3" stroke="#8ebf42"
        stroke-dasharray="3" />
      <line x1="0" y1="5" x2="30" y2="5" stroke="#000"
        stroke-dasharray="5 1" />
      <line x1="0" y1="7" x2="30" y2="7" stroke="#ccc"
        stroke-dasharray="4 2 2" />
      <line x1="0" y1="9" x2="30" y2="9" stroke="#666"
        stroke-dasharray="4 1 3 2" />
    </svg>
  </body>
</html>

In questo esempio ogni <line> usa un pattern diverso: una linea continua (nessun dasharray), poi 3 (trattini e spazi uguali), 5 1 (trattini lunghi, spazi minimi) e i pattern con conteggio dispari 4 2 2 e 4 1 3 2, che si ripetono su due passaggi come descritto sopra.

Valori

ValoreDescrizione
noneNon viene usato alcun trattino.
<dasharray>Viene usato un pattern di trattini.
initialImposta il valore predefinito della proprietà.
inheritEredita la proprietà dall'elemento genitore.

Proprietà correlate

stroke-dasharray è una delle diverse proprietà che stilizzano il contorno di un SVG. Spesso la combinerai con:

  • stroke-dashoffset — sposta il punto di inizio del pattern di trattini; è la chiave per le animazioni di disegno delle linee.
  • stroke-linecap — controlla la forma delle estremità dei trattini (butt, round, square); usa round per trasformare i trattini di lunghezza 0 in punti.
  • stroke-width — imposta lo spessore del tratto.
  • stroke — imposta il colore del tratto.
  • fill — imposta il colore interno della forma.

Pratica

Pratica
Qual è la funzione della proprietà 'stroke-dasharray' in CSS?
Qual è la funzione della proprietà 'stroke-dasharray' in CSS?
Was this page helpful?