Как сделать круг вокруг контента с помощью CSS?

Нравится

обведите вокруг содержимого

Только с этим кодом

<span>1</span>

person Jitendra Vyas    schedule 20.02.2012    source источник
comment
возможный дубликат stackoverflow.com/questions/4840736/   -  person Vivek Chandra    schedule 20.02.2012
comment
возможный дубликат Как CSS число должно быть в круге?   -  person thirtydot    schedule 20.02.2012
comment
Вы написали «эллипс», но показываете изображение с кружком. Что вы имеете в виду?   -  person Jukka K. Korpela    schedule 20.02.2012
comment
Использовать CSS -moz-border-radius: 50%;border-radius: 30px;   -  person XIMRX    schedule 18.07.2014
comment
Ознакомьтесь с моими последними улучшениями в том, как изменить размер круга, чтобы он соответствовал всему содержимому.   -  person Jose Rui Santos    schedule 26.04.2016
comment
Возможный дубликат Создайте три вертикальные точки (многоточие) внутри круга   -  person Zach Saucier    schedule 17.11.2016


Ответы (5)


http://jsfiddle.net/MafjT/

Вы можете использовать этот CSS

span {
    display: block;
    height: 60px;
    width: 60px;
    line-height: 60px;

    -moz-border-radius: 30px; /* or 50% */
    border-radius: 30px; /* or 50% */

    background-color: black;
    color: white;
    text-align: center;
    font-size: 2em;
}

Поскольку вам нужен круг, вам необходимо установить одинаковое значение для ширины, высоты и высоты строки (для центрирования текста по вертикали). Вам также необходимо использовать половину этого значения для радиуса границы.

Это решение всегда отображает круг независимо от длины содержимого.


Но если вам нужен эллипс, который расширяется вместе с содержимым, тогда http://jsfiddle.net/MafjT/256/


Изменение размера с содержимым - Улучшение

В этом https://jsfiddle.net/36m7796q/2/ вы можете увидеть, как визуализировать круг, который реагирует на изменение длины содержимого.
Вы даже можете редактировать содержимое последнего круга, чтобы увидеть, как изменяется диаметр.

person Jose Rui Santos    schedule 20.02.2012
comment
Добавление: значок информации в чистом виде css, который будет проще найти SE. Я искал некоторое время и, наконец, нашел ваше отличное решение css при поиске текста css по кругу ... - person Avatar; 06.12.2015
comment
Это не работает для встроенных элементов, таких как Click on <span>i</span> for info, где display:block было изменено на display:inline, чтобы он мог перемещаться как часть текста. Есть идеи, как с этим работать? - person Ken Sharp; 18.02.2016
comment
Последний пример (jsfiddle.net/36m7796q/2) некорректно отображается в Firefox 50 для меня. У меня получается овальная форма, а не круг. - person leeb; 15.12.2016
comment
@leeb Замените display: inline-flex на display: inline-block в Firefox. Это устраняет проблему, но приводит к тому, что текст не центрируется по вертикали. - person Jose Rui Santos; 15.12.2016
comment
@JoseRuiSantos да, это работает, но, как вы говорите, это не приводит к тому же результату. Я пришел к выводу, что лучше всего использовать элемент с фиксированной шириной / высотой и надеюсь, что содержимое не будет слишком длинным;) - person leeb; 15.12.2016

Используя CSS3:

span
{-moz-border-radius: 20px;
    border-radius: 20px;
border-color:black;
    background-color:black;
color:white;
    padding-left:15px;
    padding-right:15px;
    padding-top:10px;
    padding-bottom:10px;
    font-size:1.3em;
}

http://jsfiddle.net/NXZnq/

person Curt    schedule 20.02.2012
comment
В моем случае это не отображалось как круг, а больше похоже на закругленные слева и справа и плоские верх и низ. Ваш HTML может отличаться. - person LosManos; 17.02.2020

У вас есть много ответов, но я постараюсь рассказать вам основы.

Первый элемент - это встроенный элемент, поэтому, задав ему маржу сверху, нам нужно преобразовать его в блочный элемент. Я перешел на встроенный блок, потому что он близок к встроенному и имеет функции блочных элементов.

Во-вторых, вам нужно дать отступы справа и слева больше, чем сверху и снизу, потому что сами цифры простираются сверху вниз, поэтому они получают разумную высоту, НО, поскольку мы хотим сделать диапазон КРУГЛЫМ, поэтому мы даем им отступы больше слева и справа, чтобы освободить место для РАДИУСА ГРАНИЦЫ.

В-третьих, вы устанавливаете border-radius, который должен быть больше, чем PADDING + ширина самого содержимого, поэтому около 27 пикселей вы получите необходимую округлость, но для безопасного покрытия всех цифр вы можете установить его на более высокое значение.

Практический пример.

person Shawn Taylor    schedule 20.02.2012

Сокращенное свойство border-radius может использоваться для одновременного определения всех четырех углов. Свойство принимает один или два набора значений, каждый из которых состоит из одной-четырех длин или процентов.

Синтаксис:

[ <length> | <percentage> ]{1,4} [ / [ <length> | <percentage> ]{1,4} ]?

Примеры:

border-radius: 5px 10px 5px 10px / 10px 5px 10px 5px;
border-radius: 5px;
border-radius: 5px 10px / 10px; 

Я в вашем случае

span {
    border-radius: 100px;
    background: #000;
    color : white;
    padding : 10px 15px;


}

Посмотрите эту демонстрацию http://jsfiddle.net/daWcc/

person Rupesh Pawar    schedule 20.02.2012

В дополнение к другим решениям, http://css3pie.com/ отлично справляется с ролью полифилла для старого Internet Explorer. версии

РЕДАКТИРОВАТЬ: не требуется с 2016 года

person Urs    schedule 03.06.2013
comment
Привет, голосующий, этому ответу почти 3 года - в то время он работал очень хорошо и до сих пор работает для устаревших браузеров. - person Urs; 25.02.2016
comment
Зависит от вопроса :-) - person Urs; 23.05.2016
comment
Это не все еще неправильно, это стало неправильным со временем с изменением контекста. На самом деле мне было интересно, есть ли мета-сообщение по этой теме? Это может повредить, но я согласен, что это хорошо, если вы можете потерять очки, если ваш (в данном случае мой) ответ устарел - это способствует здоровью SO. - person Urs; 23.05.2016