Зробити значки Awesome шрифтом у колі?


134

Я використовую дивовижний шрифт в якомусь проекті, але у мене є деякі речі, які я хочу зробити зі значками, що мають чудові шрифти, я можу легко викликати такий значок:

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

Чи можливо, щоб усі іконки завжди знаходилися в круговому колі з межею? Я щось подібне маю:

введіть тут опис зображення

Використання

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

Це дасть ефект, але проблема полягає в тому, що піктограми завжди більше, ніж текст або елемент поруч із будь-якими рішеннями?

Відповіді:


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>


JsFiddle старої відповіді: http://fiddle.jshell.net/4LqeN/


6
Отримали колись, але не кругле коло?
Шнайдер

border-radiusПовинен обігнути елемент. Який брокер ви використовуєте? оновив мою відповідь з префіксами
Nico O

4
Але це не рішення. Це працює лише за наявності iвмісту. Зазвичай з FA у вас немає вмісту в i-тезі, але піктограма відображається CSS пізніше: <i class="fa fa-lock"></i>і саме це @Schneider насправді попросив.
січня

@Jan Я буду досліджувати це завтра. Але я не можу бачити проблеми. Ви маєте рацію, що теги не мають вмісту, але вміст буде додано через css. Навіть коли Ікона не вдасться завантажити, ви побачили коло. Чи можете ви зробити jsFiddle проблеми, яку ви бачите у відповіді?
Ніко О

4
Ні. Це відповідь на запитання. Дивіться зображення запитання. Є тінь, а не жорстке коло.
Ніко О

230

За допомогою шрифту Awesome ви можете легко використовувати такі зібрані значки:

<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>

зверніться до дивовижних значків з розміщеним шрифтом

Оновлення: - скрипка для складених піктограм


6
Складені значки працюють лише до 2x. Якщо ви хочете більше, ніж це, це не вийде
J Lee,

15
Хочеться, щоб це було прийнятою відповіддю, це "правильний" спосіб зробити це з приємного вигляду. Прийнята відповідь - це злом, який не налаштовується добре.
запитав_io

4
Те саме з номерами<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>
м3нда

2
@emrah - єдиний тут варіант, який є справді вигідним, а не спеціальним css, тому його більш точним, ніж будь-що тут.
запитав_io

1
Дуже елегантне рішення. @mmativ, якщо ви маєте на увазі колір фону на колі, ви просто зробите <i class = "fa fa-circle-thin fa-stack-2x" style = "color: blue"> </i>
Дж. Кірк.

34

Для цього вам не потрібні фокуси css чи html. Шрифт Awesome створив для нього клас - fa-circle Для складання кількох піктограм разом ви можете використовувати клас fa-stack на батьківському діві

<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> 

// І у нас зараз піктограма facebook всередині кола :)


2
Сампат Бадхе сказав у своїй відповіді те саме, що більше 2 років тому. Чому ви не читали інших відповідей, перш ніж писати свої?
Тарас Яремків

Ей, вибачте за Сампата, я не бачив його відповіді, я спробую змінити свою відповідь і додати ще рішення чи корисну інформацію.
Василь Гутник

1
Це гарне рішення, але воно дає синій фон для кожної ікони. Будь-яка робота навколо?
Джамшайд Камран

@CodeIt Просто використовуйте css, щоб очистити його або додати новий колір фону. Це не повинно бути проблемою.
Василь Гутник

27

Значок шрифту в колі, використовуючи emв якості базового вимірювання

якщо ви використовуєте ems для вимірювань, у тому числі line-height, font-sizeі border-radius, завдяки цьому, text-align: centerце робить досить солідним:

#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

Оновлення: скоріше використовувати flex.

Якщо ви хочете точності, це шлях.

Скрипка. Ідіть грати -> http://jsfiddle.net/atilkan/zxjcrhga/

Ось 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>

Ось 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;
}

Повеселіться


додавання вирівнювання тексту: центр; Це змушує працювати з майже всім навіть фа-інформацією
Marcio

як щодо вертикального вирівнювання?
localhoost

9

Ви також можете це зробити. Мені хотілося додати коло навколо моїх іконок іконок. Ось код.

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

8

ОНОВЛЕННЯ :

Навчившись флексу останнім часом, існує більш чистий спосіб (без таблиць і менше css). Встановіть обгортку як display: flex;і відцентруйте її, надайте їй властивості align-items: center;для (вертикального) та justify-content: center;(горизонтального) центрування.

Дивіться цей оновлений JS Fiddle


Дивно, що раніше ніхто не пропонував цього. Я завжди використовую таблиці для цього.
Просто зробіть обгортку, яка має display: tableі розташовує по центру всередині, text-align: centerдля горизонтального та vertical-align: middleвертикального вирівнювання.

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

і деякі подібні sass

.wrapper{
  display: table; 

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

}

або дивіться цей JS Fiddle


Це дуже красивий, чистий і маленький! Ось загадка
summsel

@summsel Це не те саме, що моя оригінальна відповідь? Ви просто написали код у scss, а не в css.
nclsvh

так, звичайно, так і є. Я спробував ваше рішення в CSS, і там багато людей, які віддають перевагу css. То чому б не опублікувати jsfiddle цієї css-версії.
суммсель

5

Це підхід, який вам не потрібно використовувати padding, просто встановіть heightі widthдля, aі дозвольте flexручці margin: 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

Наведений нижче приклад не дуже працював для мене, це версія, яку я зробив!

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

спробуйте це

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

Значки шрифтів Awesome вставляються як: раніше. Таким чином , ви можете стиль або ваш I або в такий спосіб:

.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

Ви можете просто отримати круглий значок за допомогою цього коду:

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

Тепер ваш CSS буде:

.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

Мені подобається відповідь Дейва Еверітта з «висотою лінії», але вона працює лише вказуючи «висоту», і тоді ми повинні додати «! Важливо» до висоти рядка ...

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

Рівень висоти лінії вирішував це для мене
мекограф

Додавання !important- це допомога, а не рішення. Це означає, що ви маєте інше властивість CSS десь ще, що перекриває вашу власність.
TylerH

0

Це найкраще і найточніше рішення, яке я знайшов поки що.

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;
    }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.