Bir daire içinde Font Awesome simgeleri yapmak mı?


134

Bazı projelerde harika yazı tipi kullanıyorum ama yazı tipi harika simgeleriyle yapmak istediğim bazı şeyler var, kolayca böyle bir simge diyebilirim:

<i class="fa fa-lock"></i>

Tüm simgelerin her zaman kenarlıklı yuvarlak daire içinde olması mümkün mü? Bunun gibi bir şey, bir resmim var:

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

kullanma

i {
  background-color: white;
  border-radius: 50%;
  border: 1x solid grey;
  padding: 10px;
}

Etkisi olacak, ancak sorun şu ki, simgeler her zaman yanındaki metin veya öğeden daha büyük, herhangi bir çözüm?

Yanıtlar:


175

i.fa {
  display: inline-block;
  border-radius: 60px;
  box-shadow: 0px 0px 2px #888;
  padding: 0.5em 0.6em;

}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<i class="fa fa-wrench"></i>


Eski cevabın JsFiddle: http://fiddle.jshell.net/4LqeN/


6
Bir gün var ama yuvarlak daire yok mu?
Schneider

border-radiusEleman yuvarlamak gerekir. Hangi tarayıcıyı kullanıyorsunuz? cevabımı öneklerle güncelleyeceğim
Nico O

4
Ancak bu bir çözüm değil. Bu yalnızca iiçeriğe sahipse çalışır . Genellikle FA ile i-etiketinde içeriğiniz olmaz, ancak simge daha sonra CSS tarafından oluşturulur: <i class="fa fa-lock"></i>ve @Schneider'ın gerçekten istediği şey budur.
Ocak

@Jan Bunu yarın araştıracağım. Ama bir Sorun göremiyorum. Haklısınız, etiketlerin içeriği yok, ancak içerik css aracılığıyla eklenecek. Simge yüklenemediğinde bile bir daire göreceksiniz. Cevapla gördüğünüz bir Problemin jsFiddle'ını yapabilir misiniz?
Nico O

4
Hayır. Sorunun cevabı bu. Sorunun resimlerine bakın. Bir gölge var, sert bir daire değil.
Nico O

230

Font Awesome ile aşağıdaki gibi yığılmış simgeleri kolayca kullanabilirsiniz:

<span class="fa-stack fa-2x">
  <i class="fas fa-circle-thin fa-stack-2x"></i>
  <i class="fas fa-lock fa-stack-1x fa-inverse"></i>
</span>

Font Awesome Yığılmış Simgelerine bakın

Güncelleme: - Yığılmış simgeler için Keman


6
Yığılmış simgeler yalnızca 2x'e kadar çalışır. Bundan daha fazlasını istiyorsanız, işe yaramaz
J Lee

15
keşke bu kabul edilen cevap olsaydı, bunu fontawesome ile yapmanın "doğru" yolu budur. Kabul edilen cevap, iyi ayarlanmayan bir hack'tir.
2014

4
Rakamlarla aynı<span class="fa-stack fa-lg"> <i class="fa fa-circle-thin fa-stack-2x"></i> <i class="fa fa-stack-1x">1</i> </span>
m3nda

2
@emrah - burada gerçekten fontawesome olan tek seçenek, özel css değil, bu yüzden buradaki her şeyden daha kesin.
sordu_io

1
Çok zarif çözüm. @mmativ Eğer daire üzerinde bir arka plan rengini kastediyorsanız, bunu yapmanız yeterlidir <i class = "fa fa-circle-thin fa-stack-2x" style = "color: blue"> </i>
J.Kirk.

34

Bunun için css veya html hilelerine ihtiyacınız yok. Font Awesome, bunun için sınıfta yerleşiktir - fa-circle Birden çok simgeyi bir araya yığmak için, üst div'de fa-stack sınıfını kullanabilirsiniz.

<span class="fa-stack fa-lg">
  <i class="fa fa-circle fa-stack-2x"></i>
  <i class="fa fa-flag fa-stack-1x fa-inverse"></i>
</span> 

// Ve şimdi çemberin içinde facebook simgesi var :)


2
Sampat Badhe, cevabında 2 yıldan fazla bir süre önce aynı şeyi söyledi. Kendi cevaplarınızı yazmadan önce neden diğer cevapları okumuyorsunuz?
Taras Yaremkiv

hey, Sampat için özür dilerim, yanıtını görmedim, cevabımı değiştirmeye ve daha fazla çözüm veya yardımcı bilgi eklemeye çalışacağım.
Vasyl Gutnyk

1
İyi bir çözümdür, ancak simgelerin her birine mavi bir arka plan verir. Etrafta iş var mı?
Jamshaid Kamran

@CodeIt Temizlemek veya yeni arka plan rengi eklemek için sadece css kullanın. Sorun olmamalı.
Vasyl Gutnyk

27

emTemel ölçü olarak kullanılan daire içindeki yazı tipi simgesi

Eğer dahil ölçümler için ems kullanırsanız line-height, font-sizeve border-radiusbirlikte, text-align: centerbu işler çok katı yapar:

#info i {
  font-size: 1.6em;
  width: 1.6em;
  text-align: center;
  line-height: 1.6em;
  background: #666;
  color: #fff;
  border-radius: 0.8em; /* or 50% width & line-height */
}

13

Güncelleme: Bunun yerine flex'i kullanın.

Hassasiyet istiyorsanız, gitmenin yolu budur.

Vaktini boşa harcamak. Oynamaya Git -> http://jsfiddle.net/atilkan/zxjcrhga/

İşte HTML

<div class="sosial-links">
    <a href="#"><i class="fa fa-facebook fa-lg"></i></a>
    <a href="#"><i class="fa fa-twitter fa-lg"></i></a>
    <a href="#"><i class="fa fa-google-plus fa-lg"></i></a>
    <a href="#"><i class="fa fa-pinterest fa-lg"></i></a>
</div>

İşte CSS

.sosial-links a{
    display: block;
    float: left;
    width: 36px;
    height: 36px;
    border: 2px solid #909090;
    border-radius: 20px;
    margin-right: 7px; /*space between*/

} 
.sosial-links a i{
    padding: 12px 11px;
    font-size: 20px;
    color: #909090;
}

İyi eğlenceler


metin hizalama ekleme: merkez; Fa-info dahil hemen hemen her şeyle çalışmasını sağlar
Marcio

dikey hizalamaya ne dersiniz?
localhoost

9

Bunu da yapabilirsiniz. İcomoon simgelerimin etrafına bir daire eklemek istedim. İşte kod.

span {
font-size: 54px;
border-radius: 50%;
border: 10px solid rgb(205, 209, 215);
padding: 30px;
}

8

GÜNCELLEME :

Son zamanlarda flex'i öğrendikten sonra, daha temiz bir yol var (tablo yok ve daha az css). Sarmalayıcıyı, altlarını display: flex;ortalayacak şekilde ayarlayın ve ona align-items: center;(dikey) ve justify-content: center;(yatay) merkezleme özelliklerini verin.

Bu güncellenmiş JS Fiddle'a bakın


Daha önce kimsenin bunu önermemesi garip .. Bunu yapmak için her zaman tabloları kullanırım. Yatay ve dikey hizalama
için bir sargının içinde display: tableve ortada bir şeyler olması yeterlidir .text-align: centervertical-align: middle

<div class='wrapper'>
  <i class='icon fa fa-bars'></i>
</div>

ve bunun gibi biraz şımarık

.wrapper{
  display: table; 

  i{
    display: table-cell;
    vertical-align: middle;
    text-align: center;
  }

}

veya bu JS Fiddle'a bakın


Bu çok güzel, temiz ve küçük bir tane! İşte SCSS
summsel

@summsel bu değil tam benim orijinal bir cevap olarak aynı şeyi mi? Kodu css yerine scss olarak yazdınız.
nclsvh

Evet, tabi ki öyle. Çözümünüzü css'de denedim ve css'i tercih eden pek çok insan var. Öyleyse neden bu css sürümünün jsfiddle'ını göndermiyorsunuz?
summsel

5

Kullanmanız gerekmeyen yaklaşım budur padding, sadece heightvewidth için başa açıkmasına izin verin .flexmargin: 0 auto

.social-links a{
  text-align:center;
	float: left;
	width: 36px;
	height: 36px;
	border: 2px solid #909090;
	border-radius: 100%;
	margin-right: 7px; /*space between*/
    display: flex;
    align-items: flex-start;
    transition: all 0.4s;
    -webkit-transition: all 0.4s;
} 
.social-links a i{
	font-size: 20px;
    align-self:center;
	color: #909090;
    transition: all 0.4s;
    -webkit-transition: all 0.4s;
    margin: 0 auto;
}
.social-links a i::before{
  display:inline-block;
  text-decoration:none;
}
.social-links a:hover{
  background: rgba(0,0,0,0.2);
}
.social-links a:hover i{
  color:#fff;
}
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"/>

<div class="social-links">
    <a href="#"><i class="fa fa-facebook fa-lg"></i></a>
    <a href="#"><i class="fa fa-twitter fa-lg"></i></a>
    <a href="#"><i class="fa fa-google-plus fa-lg"></i></a>
    <a href="#"><i class="fa fa-pinterest fa-lg"></i></a>
</div>


4

Aşağıdaki örnek benim için pek işe yaramadı, işte yaptığım sürüm bu!

HTML:

<div class="social-links">
    <a href="#"><i class="fa fa-facebook fa-lg"></i></a>
    <a href="#"><i class="fa fa-twitter fa-lg"></i></a>
    <a href="#"><i class="fa fa-google-plus fa-lg"></i></a>
    <a href="#"><i class="fa fa-pinterest fa-lg"></i></a>
</div>

CSS:

.social-links {
    text-align:center;
}

.social-links a{
    display: inline-block;
    width:50px;
    height: 50px;
    border: 2px solid #909090;
    border-radius: 50px;
    margin-right: 15px;

}
.social-links a i{
    padding: 18px 11px;
    font-size: 20px;
    color: #909090;
}

3

bunu dene

HTML:

<div class="icon-2x-circle"><i class="fa fa-check fa-2x"></i></div>

CSS:

i {
    width: 30px;
    height: 30px;
}

.icon-2x-circle {
    text-align: center;
    padding: 3px;
    display: inline-block;
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;
    border-radius: 100px;
    -moz-box-shadow: 0px 0px 2px #888;
    -webkit-box-shadow: 0px 0px 2px #888;
    box-shadow: 0px 0px 2px #888;
}

2

Font Awesome simgeleri a: olarak eklenir. Bu nedenle, ya i ya da benzerlerini biçimlendirebilirsiniz:

.i {
   background: #fff;
   border-radius: 50%;
   display: inline-block;
   height: 20px;   
   width: 20px;
}

<a href="#"><i class="fa fa-facebook fa-lg"></i></a>

2

Bu kodu kullanarak basitçe yuvarlak simge elde edebilirsiniz:

<a class="facebook-share-button social-icons" href="#" target="_blank">
    <i class="fab fa-facebook socialicons"></i>
</a>

Şimdi CSS'niz şöyle olacak:

.social-icons {
display: inline-block;border-radius: 25px;box-shadow: 0px 0px 2px #888;
padding: 0.5em;
background: #0D47A1;
font-size: 20px;
}
.socialicons{color: white;}

0

Dave Everitt'in "satır yüksekliği" cevabını beğendim, ancak yalnızca "yükseklik" belirleyerek işe yarıyor ve sonra satır yüksekliğine "! Önemli" eklememiz gerekiyor ...

.cercle {
    font-size: 2em;
    width: 2em;
    height: 2em;
    text-align: center;
    line-height: 2em!important;
    background: #666;
    color: #fff;
    border-radius: 2em;
}

Satır yüksekliği
sorunu

Eklemek !importantbir yara bandıdır, bir çözüm değildir. Bu, başka bir yerde mülkünüzü geçersiz kılan başka bir CSS mülkünüz olduğu anlamına gelir.
TylerH

0

Bu şimdiye kadar bulduğum en iyi ve en kesin çözüm.

CSS:

.social .fa {
      margin-right: 1rem;
      border: 2px #fff solid;
      border-radius: 50%;
      height: 20px;
      width: 20px;
      line-height: 20px;
      text-align: center;
      padding: 0.5rem;
    }
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.