Madde işaretleri için Yazı Tipi Başar simgesini tek bir liste öğesi ile kullanma


131

Bir CMS'deki sırasız listeler için bir madde işareti olarak bir Font Awesome ( http://fortawesome.github.com/Font-Awesome/ ) simgesi kullanabilmeyi istiyoruz .

CMS'deki metin düzenleyicisi yalnızca ham HTML çıkarır, bu nedenle ek öğeler / sınıflar eklenemez.

Bu, işaret şu şekilde göründüğünde simgelerin görüntülenmesi anlamına gelir:

<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

Font Awesome'in ayrı bir öğe gerektirecek farklı bir font-family özelliği gerektirip gerektirmediğini görebildiğim ilk sorun.

Bu saf CSS kullanılarak mümkün müdür? Ya da öğeyi jQuery gibi bir şey kullanarak her liste öğesinin başına eklemem gerekir mi?

Bir arka plan resminin geri dönüşünü kullanabileceğimizin farkındayım, ancak mümkünse Font Awesome'i kullanmak harika olur.

Yanıtlar:


248

Çözüm:

http://jsfiddle.net/VR2hP/

ul li:before {    
    font-family: 'FontAwesome';
    content: '\f067';
    margin:0 5px 0 -15px;
    color: #f00;
}

İşte bu tekniği derinlemesine açıklayan bir blog yazısı .


18
Bu harika yazı tipi simgelerinden css değerlerine çevirilerin faydalı bir listesi burada: astronautweb.co/snippet/font-awesome
Scott C Wilson

24
Varsayılan madde işaretlerini kaldırmak için bunu dahil etmek isteyeceksinizul { list-style-type: none; }
Edd

Aynı sayfada iki listem varken bu yöntem neden çalışmıyor?
deKajoo

6
Çok güzel, işleri daha güzel sıralamak için önerebileceğim tek şey margin: 0 0.2em 0 -1.2em;, istenen aralığı elde etmek için iki değeri aynı miktarda arttırmak / azaltmaktır. Yazı tipinize tam olarak uymayan sabit bir piksel değeri kullanırsanız, çok satırlı liste öğelerinde bir tutarsızlık fark edeceksiniz.
05

İstemci sıralı (numaralı) liste oluşturmak için cms kullanılırsa buna bir ül önek aksi takdirde bunu yapmak için çalışacağını söyledi eklendi
rtpHarry

154

Yeni fontawesome (sürüm 4.0.3), bunu gerçekten kolaylaştırır. Sadece aşağıdaki sınıfları kullanıyoruz:

<ul class="fa-ul">
  <li><i class="fa-li fa fa-check-square"></i>List icons (like these)</li>
  <li><i class="fa-li fa fa-check-square"></i>can be used</li>
  <li><i class="fa-li fa fa-spinner fa-spin"></i>to replace</li>
  <li><i class="fa-li fa fa-square"></i>default bullets in lists</li>
</ul>

Bu (yeni) url'ye göre: http://fontawesome.io/examples/#list


12
Yeni FA sürümü ile bu doğru cevap olmalıdır. Çok iyi, bu açıklama için teşekkürler.
David

23
Katılmıyorum, soru saf CSS'de tek bir liste kullanarak bir çözüm istedi. Bu, sınıfların yanı sıra ek HTML kullanır. Bu kesinlikle FA belgelerinin bunu yapmak için belirttiği yol olsa da, teknik olarak sorunun çözümü değildir ve bunu HTML çıktınızı değiştirmeden yapmak istiyorsanız kullanışlı değildir.
Ryan

Ne yapmaya çalıştığınızı biliyorum - ama HTML'lerini değiştiremeyecekleri durumlarda sürekli olarak saf CSS yazmayan insanlar ???? (cidden, lütfen web çerçevenizi değiştirmeye bakın), karar vermek için yan yana 'gerçek' yanıtla yan yana duran 'doğru' yazı tipi harika dokümanlar yoluna bağlanmak için google sorgu belleği tazeleyicisine ihtiyaç duyacaktır. "Sorunun tek bir doğru cevabı yok" demek istemiyorum ama yok ...
lol

1
Ek satırlardaki tanımlama, simgenin genişliğini içerecek şekilde genişlemeyeceğinden, bu yaklaşım birden çok satıra sarılmış liste öğeleriyle iyi çalışmaz.
Lars Haugseth

2
FA 4.3 (muhtemelen diğer versiyonları da) ve Bootstrap 3 ile ekleyerek Muhtemelen değer ulve liöğeleri ayarlanması gerekir position: relativeçünkü fa-limadde mutlak konumlandırılmış. Aksi takdirde, hepsi sol üstte yüzer.
Jeremy Harris

14

Yukarıdaki ve başka bir yerde verilen cevaplardan bazılarının üzerine inşa etmek ve mutlak konumlandırmanın : önce sözde sınıfla birlikte kullanılmasını önermek istiyorum . Yukarıdaki örneklerin çoğu (ve benzer sorularda), Font Awesome'in işleme yöntemi dahil olmak üzere özel HTML işaretlemesini kullanıyor. Bu, asıl soruya aykırıdır ve kesinlikle gerekli değildir.

BURADAN DEMO

ul {
  list-style-type: none;
  padding-left: 20px;
}

li {
  position: relative;
  padding-left: 20px;
  margin-bottom: 10px
}

li:before {
  position: absolute;
  top: 0;
  left: 0;
  font-family: FontAwesome;
  content: "\f058";
  color: green;
}

Bu temelde bu. CSS içeriğinde kullanmak için ISO değerini Font Awesome hile sayfasında alabilirsiniz . Ters eğik çizgi ön ekli son 4 alfanümerik karakteri kullanmanız yeterlidir. Yani [&#xf058;]olur\f058


4

Örnek sayfalarında sırasız bir listenin yanında Font Awesome'in nasıl kullanılacağına dair bir örnek var .

<ul class="icons">
  <li><i class="icon-ok"></i> Lists</li>
  <li><i class="icon-ok"></i> Buttons</li>
  <li><i class="icon-ok"></i> Button groups</li>
  <li><i class="icon-ok"></i> Navigation</li>
  <li><i class="icon-ok"></i> Prepended form inputs</li>
</ul>

Bu kodu denedikten sonra çalıştığını bulamıyorsanız, kitaplığı doğru şekilde eklemiyorsunuz demektir. Web sitelerine göre, kütüphaneleri şu şekilde eklemelisiniz:

<link rel="stylesheet" href="../css/bootstrap.css">
<link rel="stylesheet" href="../css/font-awesome.css">

Ayrıca, tuhaf Chris Coyier'in web sitesi CSS Tricks'deki simge yazı tipleriyle ilgili gönderisine bakın .

İşte kendisi tarafından hazırlanan bir ekran kaydı ve kendi simge yazı tipi yüzünüzü nasıl oluşturacağınız hakkında konuşuyor.


2
Ekstra işaretlemeye ihtiyacınız yok: kendisinden li:beforefarklı bir yazı tipi ailesine sahip olabilir li.
cimmanon

@cimmanon: Gerçekten haklı olsanız da, Font Awesome belgeleri ekstra işaretlemenizin olması gerektiğini gösteriyor. Teknik olarak buna gerek yok, ancak, hangi tuşun hangi sembole eşlendiğini bulmak için yazı tipinin glifleri arasında biraz araştırma yapılması gerekebileceğini düşünüyorum. Bu biraz zaman ve sabır gerektirir, ancak elbette, çözümünüz de işe yarar.
cereallarceny

@cereallarceny - sahip olduğumuz sorun CMS için HTML editörü (TinyMCE), sorumda verdiğim formatı üretiyor. Bu açıdan bakıldığında, HTML listesi üzerinde kontrolümüz yok. TinyMCE'yi i öğesini içerecek (ve onu boş bir öğe olarak silmeyecek şekilde) yapılandırmadıkça.
BaronGrivet

Yani HTML'ye erişiminiz yok, CSS'ye erişiminiz var mı?
cereallarceny

Evet, CSS'ye tam erişim.
BaronGrivet

1

@Tama, şu yanıtı kontrol etmek isteyebilirsiniz: Madde işaretleri olarak Font Awesome simgelerini kullanma

Temel olarak bunu, FontAwesome ve buradaki diğer cevapların önerdiği ekstra işaretlemeye gerek kalmadan yalnızca CSS kullanarak gerçekleştirebilirsiniz.

Başka bir deyişle, ilk gönderinizde bahsettiğiniz aynı temel işaretlemeyi kullanarak ihtiyacınız olan şeyi başarabilirsiniz:

<ul>
  <li>...</li>
  <li>...</li>
  <li>...</li>
</ul>

Teşekkürler.


1

Standart <ul>ve <i>içeriyi kullanan çözümüm<li>

  <ul>
    <li><i class="fab fa-cc-paypal"></i> <div>Paypal</div></li>
    <li><i class="fab fa-cc-apple-pay"></i> <div>Apple Pay</div></li>
    <li><i class="fab fa-cc-stripe"></i> <div>Stripe</div></li>
    <li><i class="fab fa-cc-visa"></i> <div>VISA</div></li>
  </ul>

görüntü açıklamasını buraya girin

BURADAN DEMO


1

Font Awesome 5'te yukarıdaki cevapların bazılarında olduğu gibi bazı değişikliklerle saf CSS kullanılarak yapılabilir.

ul {
  list-style-type: none;
}

li:before {
  position: absolute;
  font-family: 'Font Awesome 5 free';
          /*  Use the Name of the Font Awesome free font, e.g.:
           - 'Font Awesome 5 Free' for Regular and Solid symbols;
           - 'Font Awesome 5 Brand' for Brands symbols.
           - 'Font Awesome 5 Pro' for Regular and Solid symbols (Professional License);
          */
  content: "\f1fc"; /* Unicode value of the icon to use: */
  font-weight: 900; /* This is important, change the value according to the font family name
                       used above. See the link below  */
  color: red;
}

Doğru yazı tipi ağırlığı olmadan, yalnızca boş bir kare gösterecektir.

https://fontawesome.com/how-to-use/on-the-web/advanced/css-pseudo-elements#define

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.