Triángulo CSS | Programar Plus

HTML

Puedes hacerlos con un solo div. Es bueno tener clases para cada posibilidad de dirección.

<div class="arrow-up"></div>
<div class="arrow-down"></div>
<div class="arrow-left"></div>
<div class="arrow-right"></div>

CSS

La idea es una caja con ancho y alto cero. El ancho y el alto reales de la flecha están determinados por el ancho del borde. En una flecha hacia arriba, por ejemplo, el borde inferior está coloreado mientras que el izquierdo y el derecho son transparentes, lo que forma el triángulo.

.arrow-up {
  width: 0; 
  height: 0; 
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  
  border-bottom: 5px solid black;
}

.arrow-down {
  width: 0; 
  height: 0; 
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
  
  border-top: 20px solid #f00;
}

.arrow-right {
  width: 0; 
  height: 0; 
  border-top: 60px solid transparent;
  border-bottom: 60px solid transparent;
  
  border-left: 60px solid green;
}

.arrow-left {
  width: 0; 
  height: 0; 
  border-top: 10px solid transparent;
  border-bottom: 10px solid transparent; 
  
  border-right:10px solid blue; 
}

Manifestación

Vea la animación de lápiz para explicar los triángulos CSS de Chris Coyier (@chriscoyier) en CodePen.

Ejemplos de

Dave Everitt escribe en:

Para un triángulo equilátero, vale la pena señalar que la altura es el 86.6% del ancho, por lo que (borde-ancho-izquierdo + borde-ancho-derecho) * 0.866% = borde-fondo-ancho