Se puede utilizar el before
o after
pseudo-elemento y aplicar un poco de CSS a la misma. Hay varias formas. Puede agregar ambos before
y after
, y rotar y colocar cada uno de ellos para formar una de las barras. Una solución más sencilla es agregar dos bordes solo al before
elemento y rotarlo usando transform: rotate
.
Desplácese hacia abajo para obtener una solución diferente que use un elemento real en lugar de los elementos pseuso
En este caso, agregué las flechas como viñetas en una lista y usé em
tamaños para que se ajusten correctamente a la fuente de la lista.
ul {
list-style: none;
}
ul.big {
list-style: none;
font-size: 300%
}
li::before {
position: relative;
/* top: 3pt; Uncomment this to lower the icons as requested in comments*/
content: "";
display: inline-block;
/* By using an em scale, the arrows will size with the font */
width: 0.4em;
height: 0.4em;
border-right: 0.2em solid black;
border-top: 0.2em solid black;
transform: rotate(45deg);
margin-right: 0.5em;
}
/* Change color */
li:hover {
color: red; /* For the text */
}
li:hover::before {
border-color: red; /* For the arrow (which is a border) */
}
<ul>
<li>Item1</li>
<li>Item2</li>
<li>Item3</li>
<li>Item4</li>
</ul>
<ul class="big">
<li>Item1</li>
<li>Item2</li>
<li>Item3</li>
<li>Item4</li>
</ul>
Por supuesto, no es necesario usar before
o after
, también puede aplicar el mismo truco a un elemento normal. Para la lista anterior es conveniente, porque no necesita marcado adicional. Pero a veces es posible que desee (o necesite) el marcado de todos modos. Puedes usar un div
o span
para eso, e incluso he visto a personas reciclar el i
elemento para 'íconos'. De modo que ese marcado podría verse a continuación. <i>
Es discutible si usarlo para esto es correcto, pero también puede usar span para esto para estar seguro.
/* Default icon formatting */
i {
display: inline-block;
font-style: normal;
position: relative;
}
/* Additional formatting for arrow icon */
i.arrow {
/* top: 2pt; Uncomment this to lower the icons as requested in comments*/
width: 0.4em;
height: 0.4em;
border-right: 0.2em solid black;
border-top: 0.2em solid black;
transform: rotate(45deg);
}
And so you can have an <i class="arrow" title="arrow icon"></i> in your text.
This arrow is <i class="arrow" title="arrow icon"></i> used to be deliberately lowered slightly on request.
I removed that for the general public <i class="arrow" title="arrow icon"></i> but you can uncomment the line with 'top' <i class="arrow" title="arrow icon"></i> to restore that effect.
Si busca más inspiración, asegúrese de consultar esta increíble biblioteca de íconos CSS puros de Nicolas Gallagher . :)