W3docs

Propiedad CSS stroke-dasharray

Cómo usar la propiedad CSS stroke-dasharray para crear líneas discontinuas en un elemento. Conoce la propiedad y sus valores con ejemplos.

La propiedad stroke-dasharray controla el patrón de trazos y espacios usado para pintar el contorno (stroke) de una forma SVG. En lugar de una línea continua, el trazo se divide en trazos y huecos alternados, lo que permite dibujar bordes discontinuos y punteados, separadores y las líneas utilizadas en animaciones de trazado.

Esta página explica cómo se interpreta la lista de valores, la regla de duplicación para recuentos impares que confunde a la mayoría, los casos de uso más comunes y cómo stroke-dasharray interactúa con propiedades relacionadas.

Cómo funciona la lista de valores

stroke-dasharray acepta none o un <dasharray> — una lista de longitudes o porcentajes separados por comas y/o espacios en blanco. Los números se leen en orden como trazo, hueco, trazo, hueco…, y la lista completa se repite a lo largo del trazado:

  • Un valor4 dibuja un trazo de 4, luego un hueco de 4, repitiéndose. Trazos y huecos iguales.
  • Dos valores8 2 dibuja un trazo de 8 unidades, un hueco de 2 unidades y luego se repite. Esta es la forma más común.
  • Varios valores4 1 2 1 alterna entre trazo 4, hueco 1, trazo 2, hueco 1, y luego vuelve a empezar.

El punto clave a tener en cuenta: si se indica un número impar de valores, la lista se duplica para hacerla par. Así, 5 3 2 se comporta como 5 3 2 5 3 2, lo que significa trazo 5, hueco 3, trazo 2, trazo 5, hueco 3, trazo 2 — el papel de cada número se invierte en la segunda pasada. Use un número par de valores siempre que desee un patrón repetitivo predecible.

Un valor de 0 para un trazo produce un punto cuando se combina con stroke-linecap: round, que es la forma de crear líneas punteadas redondeadas.

Casos de uso comunes

  • Bordes o separadores discontinuos y punteados en iconos e ilustraciones, donde un border CSS no puede seguir un trazado curvo o diagonal.
  • Animaciones de trazado ("auto-dibujado"), donde stroke-dasharray se establece con la longitud del trazado y stroke-dashoffset se anima desde esa longitud hasta 0, haciendo que el trazo parezca dibujarse a sí mismo.
  • Anillos de progreso y cargadores, donde animar el trazo y el offset revela un trazo circular.

Los estilos en línea CSS anulan los atributos de presentación SVG. Por ejemplo, un estilo en línea stroke-dasharray: 4; tiene prioridad sobre el atributo de presentación stroke-dasharray="4".

Información

La propiedad stroke-dasharray puede usarse tanto como propiedad CSS como atributo de presentación SVG. Puede aplicarse a cualquier elemento, pero solo afecta a los siguientes: <altGlyph>, <circle>, <ellipse>, <path>, <line>, <polygon>, <polyline>, <rect>, <text>, <textPath>, <tref> y <tspan>.

Valor inicialnone
Se aplica aElementos de forma y contenido de texto.
HeredableSí.
AnimableNo.
VersiónEspecificación SVG 1.1
Sintaxis DOMObject.strokeDasharray = "none";

Sintaxis

Sintaxis CSS de stroke-dasharray

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

Ejemplo de la propiedad stroke-dasharray:

Ejemplo de código 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>

Resultado

CSS stroke-dasharray

Ejemplo de la propiedad stroke-dasharray con el elemento <line>:

Otro ejemplo de código 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>

En este ejemplo, cada <line> usa un patrón diferente: una línea continua (sin dasharray), luego 3 (trazos y huecos iguales), 5 1 (trazos largos, huecos pequeños), y los patrones con recuento impar 4 2 2 y 4 1 3 2, que se repiten en dos pasadas según se describe anteriormente.

Valores

ValorDescripción
noneNo se usa ningún trazo discontinuo.
<dasharray>Se usa un patrón de trazos discontinuos.
initialHace que la propiedad use su valor predeterminado.
inheritHereda la propiedad de su elemento padre.

Propiedades relacionadas

stroke-dasharray es una de varias propiedades que dan estilo al contorno de un SVG. Frecuentemente se combina con:

  • stroke-dashoffset — desplaza el inicio del patrón de trazos; la clave para las animaciones de trazado.
  • stroke-linecap — controla la forma de los extremos de los trazos (butt, round, square); use round para convertir trazos de longitud 0 en puntos.
  • stroke-width — establece el grosor del trazo.
  • stroke — establece el color del trazo.
  • fill — establece el color interior de la forma.

Práctica

Práctica
¿Cuál es la función de la propiedad 'stroke-dasharray' en CSS?
¿Cuál es la función de la propiedad 'stroke-dasharray' en CSS?
Was this page helpful?