CSSSelectores

Selector de atributo

Selecciona elementos según los atributos que tengan en el HTML, con o sin importar su valor exacto.

¿Qué es?

Se escribe entre corchetes ([atributo]) y permite seleccionar elementos por la simple presencia de un atributo, por su valor exacto, o por una coincidencia parcial de ese valor. Es muy útil para estilar formularios o enlaces sin depender de clases adicionales.

Presencia y valor exacto

/* Cualquier elemento que tenga el atributo "disabled", sea cual sea su valor */
[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Solo los <input> cuyo atributo type valga exactamente "email" */
input[type="email"] {
  border-color: #5b9bd5;
}

Coincidencias parciales

También se pueden usar operadores para matchear una parte del valor, muy parecido a como funcionan las expresiones regulares simples.

/* ^= : el valor EMPIEZA con "https" */
a[href^="https"] {
  color: green;
}

/* $= : el valor TERMINA con ".pdf" */
a[href$=".pdf"] {
  font-weight: 600;
}

/* *= : el valor CONTIENE "docs" en cualquier parte */
a[href*="docs"] {
  text-decoration: underline;
}

/* ~= : el valor es una de las palabras separadas por espacio */
[class~="destacado"] {
  background: yellow;
}

Una combinación clásica es marcar visualmente los enlaces externos que abren en PDF, o distinguir links que van a un dominio distinto, sin tener que agregarles una clase manualmente en el HTML.

A tener en cuenta: Se puede agregar una i antes del corchete de cierre ([type="email" i]) para que la comparación del valor ignore mayúsculas y minúsculas. Sin ese flag, [type="email"] no matchea type="EMAIL".
especificidad: 0-1-0formularioscoincidencia parcial