Anda dapat menggunakan before
atau after
pseudo-element dan menerapkan beberapa CSS padanya. Ada berbagai cara. Anda dapat menambahkan before
dan after
, serta memutar dan memposisikan masing-masing untuk membentuk salah satu batang. Solusi yang lebih mudah adalah menambahkan dua batas hanya ke before
elemen dan memutarnya menggunakan transform: rotate
.
Gulir ke bawah untuk solusi berbeda yang menggunakan elemen sebenarnya, bukan elemen pseuso
Dalam hal ini, saya telah menambahkan panah sebagai peluru dalam daftar dan menggunakan em
ukuran untuk membuatnya berukuran sesuai dengan font daftar.
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>
Tentu saja Anda tidak perlu menggunakan before
atau after
, Anda dapat menerapkan trik yang sama ke elemen normal juga. Untuk daftar di atas lebih mudah, karena Anda tidak memerlukan markup tambahan. Tetapi terkadang Anda mungkin menginginkan (atau membutuhkan) markup. Anda dapat menggunakan a div
atau span
untuk itu, dan saya bahkan telah melihat orang-orang bahkan mendaur ulang i
elemen untuk 'ikon'. Jadi markup itu bisa terlihat seperti di bawah ini. Apakah menggunakan <i>
untuk ini benar masih bisa diperdebatkan, tetapi Anda dapat menggunakan rentang untuk ini juga agar berada di sisi yang aman.
/* 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.
Jika Anda mencari lebih banyak inspirasi, pastikan untuk memeriksa perpustakaan ikon CSS murni yang mengagumkan ini oleh Nicolas Gallagher . :)