W3docs

Propiedad CSS stroke-width

Cómo usar la propiedad CSS stroke-width para establecer el grosor del trazo. Descripción de la propiedad y ejemplos de sus valores.

La propiedad CSS stroke-width establece el grosor del contorno (el "trazo") dibujado alrededor de una figura SVG o un texto. El trazo es la línea pintada que sigue el trazado de la figura; stroke-width controla qué tan gruesa es esa línea.

Esta página cubre la sintaxis, los valores aceptados (longitudes y porcentajes), cómo stroke-width interactúa con los atributos de presentación de SVG, y los aspectos a tener en cuenta respecto a las unidades y el escalado con viewBox.

Por qué usar stroke-width

En SVG, el contorno de una figura y su interior se pintan por separado: la propiedad stroke pinta el contorno y fill pinta el interior. Un trazo solo es visible cuando tiene un ancho distinto de cero, por lo que stroke-width es lo que hace que un contorno aparezca realmente. Úsala para hacer bordes más gruesos o más delgados, para dibujar cuadrículas de línea fina, o para crear iconos y texto con contornos en negrita.

stroke-width vs. el atributo SVG

Puedes establecer el ancho del trazo de dos formas: como atributo de presentación SVG en el marcado (stroke-width="3") o como propiedad CSS. Cuando ambas están presentes, CSS gana — una regla CSS (o un style en línea) tiene precedencia sobre el atributo de presentación. Esta es la razón habitual por la que un valor establecido en el marcado SVG parece "ignorarse": una hoja de estilos lo está sobreescribiendo.

<!-- The CSS stroke-width: 1px wins over the attribute stroke-width="5". -->
<circle cx="5" cy="5" r="3" stroke-width="5" style="stroke-width: 1px;" />
Información

El atributo stroke-width es un atributo de presentación y puede aplicarse a cualquier elemento, pero solo tendrá efecto en los siguientes elementos: <altGlyph>, <circle>, <ellipse>, <line>, <path>, <polygon>, <polyline>, <rect>, <text>, <textPath>, <tref> y <tspan>.

Información

Se requieren unidades como px o em, excepto cuando el valor es 0.

Valor inicial1
Se aplica aElementos de forma y contenido de texto.
Se heredaSí.
AnimableSí.
VersiónEspecificación SVG 1.1
Sintaxis DOMObject.strokeWidth = "0.5";

Sintaxis

stroke-width: length | percentage | initial | inherit;

El ancho está centrado en el trazado: la mitad se pinta dentro del borde de la figura y la otra mitad fuera. Por tanto, un stroke-width de 4 en un círculo de radio 3 añade 2 unidades más allá del radio y superpone 2 unidades hacia el interior.

Ejemplo de la propiedad stroke-width:

Ejemplo de código CSS stroke-width

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-width property example</h2>
    <svg viewBox="0 0 30 10">
      <circle cx="5" cy="5" r="3" stroke="#1c87c9" style="stroke-width: 1px;" />
    </svg>
  </body>
</html>

Resultado

CSS stroke-width

Ejemplo de la propiedad stroke-width con el valor "length":

Otro ejemplo de código CSS stroke-width

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-width property example</h2>
    <svg viewBox="0 0 30 10">
      <circle cx="5" cy="5" r="3" stroke="#1c87c9" style="stroke-width: 3px;" />
    </svg>
  </body>
</html>

Ejemplo de la propiedad stroke-width con el valor "%":

Un porcentaje se resuelve respecto a la diagonal del SVG — concretamente la diagonal del viewport (sqrt(width² + height²) / sqrt(2)), no respecto al tamaño propio de la figura. Esto hace que los anchos en porcentaje sean útiles cuando se desea que el trazo escale con el dibujo.

Ejemplo de valor porcentual de CSS stroke-width

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <h2>Stroke-width property example</h2>
    <svg viewBox="0 0 30 10">
      <circle cx="5" cy="5" r="3" stroke="#1c87c9" style="stroke-width: 2%;" />
    </svg>
  </body>
</html>

Valores

ValorDescripción
lengthEspecifica el ancho del trazo.
percentageEspecifica el ancho del trazo en %.
initialHace que la propiedad use su valor predeterminado.
inheritHereda la propiedad de su elemento padre.

Notas y aspectos a tener en cuenta

  • Un ancho cero oculta el trazo. stroke-width: 0 no dibuja nada, incluso si hay un color stroke definido.
  • Las unidades son obligatorias para valores CSS distintos de cero. Dentro de un style o una hoja de estilos, usa 2px, 0.5em, etc. La forma de número sin unidad (stroke-width="3") solo es válida como atributo SVG, donde el número se interpreta en unidades del espacio de usuario.
  • El trazo se distribuye a ambos lados del trazado. Dado que la mitad del ancho se sitúa fuera del borde de la figura, un trazo grueso puede sobresalir del viewBox y quedar recortado. Añade relleno al viewBox si el contorno aparece cortado.
  • Se escala con el viewBox. Un stroke-width expresado en unidades de usuario crece y se reduce a medida que el SVG se escala para ajustarse a su contenedor. Para mantener un grosor constante en pantalla independientemente del escalado, añade el atributo SVG vector-effect="non-scaling-stroke" al elemento.

Propiedades relacionadas

  • stroke — el color (pintura) del contorno.
  • stroke-linecap — la forma de los extremos de los trazados abiertos.
  • stroke-dasharray — convierte el trazo en una línea discontinua.
  • stroke-dashoffset — desplaza el punto de inicio del patrón de guiones.
  • fill — el color del interior de una figura.

Práctica

Práctica
¿Qué hace la propiedad CSS 'stroke-width'?
¿Qué hace la propiedad CSS 'stroke-width'?
Was this page helpful?