Css круг внутри круга

Круги в CSS

От автора: я постоянный эксперт Cloud Four по кругам. Я не планировал им быть. Некоторое время назад мы работали над проектом, в котором было много кругов: круглые контейнеры, круглые миниатюры, круглые кнопки. И сначала я стал парнем, с которым можно поговорить, если у вас возникли проблемы с кругами и CSS.

Но я открою вам секрет: в этом нет ничего сложного. К концу этой статьи я думаю, что вы тоже будете экспертом.

Создание кругов

Существует несколько методов определения динамических круглых форм в HTML и CSS, каждый из которых имеет свои плюсы и минусы. Вот те немногие, с которыми я экспериментировал больше всего, от самых распространенных и до наименее распространенных.

border-radius

Самая распространенная техника — это скруглить все углы на 50%. Это самый простой способ, и он широко поддерживается. Свойство border-radius также будет влиять на обводки, тени и целевой размер касания / клика элемента.

Онлайн курс по JavaScript

Научитесь создавать приложения со сложными интерфейсами

Это основной язык для современной веб-разработки — почти 100% сайтов работает на JavaScript. Освойте его с нуля всего за 4 месяца, и вы сможете зарабатывать от 70 000 рублей.

Если вы хотите, чтобы круг растягивался до формы таблетки, установите для border-radius половину высоты элемента вместо 50%. Если высота неизвестна, выберите произвольно большое значение (например, 99em).

SVG

SVG может включать в себя элемент , который может быть стилизован аналогично любому другому контуру. Они очень хорошо поддерживаются и производительны для анимации, но требуют больше разметки, чем другие методы. Чтобы предотвратить визуальное обрезание фигуры, убедитесь, что радиус круга (плюс половина ширины его обводки, если есть) немного меньше viewBox SVG.

clip-path

Это новая техника. Ее поддержка вполне достойная, но менее последовательная. clip-path не влияет на макет элемента, что означает, что оно влияет на обводку и, скорее всего, будет скрывать внешние тени. Это может быть хорошо или плохо в зависимости от того, чего вы пытаетесь достичь.

Радиальный градиент

Мы можем использовать background-image и radial-gradient, чтобы визуально заполнить элемент кругом. Любой контент будет располагаться поверх этой фигуры, но его расположение (включая целевой размер касания / клика) не будет затронуто. Это мой наименее любимый метод, потому что края круга могут казаться неровными или нечеткими в зависимости от браузера, но это может хорошо подходить для тонких фоновых деталей.

Центрирование контента

Можно использовать практически любой метод для центрирования вещей с помощью CSS. Но иногда вы можете заметить, что содержимое выглядит слегка смещенным. Хотя это не уникально для круглых контейнеров, их уменьшенная площадь поверхности делает проблему еще более заметной.

Читайте также:  Визуальный редактор html таблиц

Сравнение методов центрирования для элементов разных размеров в Safari. Обратите внимание, что некоторые методы имеют более заметный джиттер в положении значка относительно его контейнера.

Это связано с тем, как браузеры рассчитывают субпиксели. Каждый раз, когда мы используем относительные единицы, единицы на основе окра просмотра или значения из модульной шкалы, есть вероятность, что мы просим браузер вычислять дробные значения, например 22.78125px. Когда-нибудь эта проблема может сломать нашу сетку или вызвать другие фундаментальные проблемы. В наши дни браузеры тщательно работают над изменением вычислений в зависимости от элемента, свойства и контекста, но это все равно не идеально.

По моему опыту, самый гибкий метод для центрирования — использовать комбинацию абсолютного позиционирования (чтобы установить центральную точку на основе расположения родительского элемента) и преобразования (чтобы поместить дочерний элемент с помощью относительных вычислений):

Обрезка содержимого

Центрирование это хорошо, но что, если мы хотим заполнить круг изображением?

С помощью HTML / CSS

Мы можем обрезать элемент img до круга, используя border-radius:

Это имеет некоторые ограничения:

Элемент не адаптируется к своему контейнеру.

Мы не можем применить какие-либо внутренние тени, чтобы как-то отделить изображение от фона (кроме как в самом изображении).

Мы используем object-fit: cover для предотвращения искажения неквадратных изображений, но это не поддерживается в IE11.

Вот более сложный пример. В нем используется элемент-оболочка, чтобы установить соотношения сторон блока для поддержания квадратных пропорций, в нем улучшается обработка неквадратных изображений с помощью @supports и применяется прозрачная внутренняя тень, чтобы отделить изображение от фона:

С помощью SVG

Мы можем сделать то же самое, используя SVG:

Но поскольку элементы SVG image не поддерживают srcset или sizes, это, вероятно, плохой выбор для шаблона эскизов изображений общего назначения.

Субпиксельные промежутки

Если вы наложите внутренние тени, границы или другие причудливые элементы поверх круглого содержимого, вы можете в конечном итоге заметить, что появляются некоторые субпиксельные артефакты:

Круги в CSS

Светлые пиксели вдоль края, где фон выходит за внутреннюю границу.

К сожалению, я не нашел решения этой проблемы. Кажется, это происходит независимо от техники, используемой для рисования границы или отображения изображения, и это имеет место в некоторой степени в каждом браузере.
Если вы найдете способ наложения круговых эффектов без этих артефактов, пожалуйста, дайте мне знать в комментариях!

Обтекание текстом

Текст! Это основа Интернета. Он заполняет прямоугольники и разбивается на строки. Что мы можем сделать с этим?

Внешний текст

Вы можете задать обтекание текстом вокруг круглой фигуры, используя свойство shape-outside:

Внутренний текст

Стоп! Это, наверное, плохая идея! Сделать его адаптивным практически невозможно! Просто подождите, пока у нас не будет свойства shape-inside!

Точно? Хорошо, хорошо, у Джонатана Скита есть интеллектуальный хак. Он использует псевдо-элементы для установки shape-outside по обе стороны от текста:

Вдоль контура

Мы можем установить текст по изогнутому контуру с помощью SVG и :

Читайте также:  Java for note 2

К сожалению, поддерживается для не во всех браузерах, но преобразование в не слишком сложное.

Заключение!

Вот и все! Вы прочитали длинную статью о действительно важной теме, прошли по ее минным полям с вложенными заголовками и повторяющимися демонстрациями и обрели знание о кругах в качестве единственной награды! Продолжайте в том же духе, отважный читатель! Я верю в вас!

Автор: Tyler Sticka

Онлайн курс по JavaScript

Научитесь создавать приложения со сложными интерфейсами

Это основной язык для современной веб-разработки — почти 100% сайтов работает на JavaScript. Освойте его с нуля всего за 4 месяца, и вы сможете зарабатывать от 70 000 рублей.

Редакция: Команда webformyself.

Источник

Используя CSS создать круг внутри круга

НО, как вы можете видеть (в Chrome и Firefox), белый круг центрируется в верхней части белого круга. Я пробовал различные комбинации позиции: абсолютное и положение: относительно положительного эффекта.

10 ответов

Поскольку вы знаете размеры кругов, вы можете просто поместить их с помощью:

 position:relative; top: 155px; 

Здесь другой способ использования позиционирования и полей.

Этот метод основания центрального элемента по положению абсолютный, и мы устанавливаем край верхнего края, равный половине высоты элемента, а оставшийся край будет половиной ширины.

замените верхний край поля, оставшийся с

сделает его динамичным благодаря @Magnus Buvarp

Применение position:absolute к внутреннему div и position:relative к внешнему div.

Добавить позицию: относительная; топ: 150px; к вашему whitecircle в css

Пока вы знаете ширину и высоту #whitecircle , вы можете установить ее в позиции absolute и relative для нее родительской. затем дайте #whitecircle left top 50% и вычтите половину его ширины ширины.

top: calc(50% - (90px / 2)); left: calc(50% - (90px / 2)); 

Быстрое решение — установить position в relative и установить left и top на 50%, установив transform в translateX(-50%) translateY(-50%) . Добавьте префиксы, чтобы обеспечить широкую совместимость.

Используйте «position: relative» для черного круга и «position: absolute» для белого круга.

Вы можете использовать абсолютное позиционирование на белом круге плюс перевод, чтобы сделать его полностью центрированным в зависимости от размера черного круга. Таким образом, вы можете свободно изменять размер черного круга.

Вот рабочий пример, идеально по центру:

Вам следует заменить margin-top: -45px; margin-left: -45px; с transform: translate(-50%, -50%); чтобы сделать его динамичным 🙂

Ещё вопросы

  • 0 Разбор HTML от определенной начальной точки до определенной конечной точки?
  • 1 Проблемы при построении временных рядов против пользовательских логинов?
  • 0 Откройте div и закройте других
  • 1 Как это сделать, если вы не хотите читать всю строку?
  • 0 Как сделать элемент видимым или нет с помощью тега выбора?
  • 1 Python, построить три графика в plt.subplots (2,2)?
  • 1 Отдых не может быть разрешен к типу
  • 1 NullPointerException при ответе с использованием модернизации
  • 1 Как использовать атрибут «android: inputMethod»?
  • 0 Mysql phpmyadmin показать пустую мощность
  • 1 Передача параметров через URL в C # ASP.net
  • 1 Удаление класса из всех изображений с помощью JavaScript без использования jQuery
  • 0 DBCP XAMPP не принимает мой часовой пояс
  • 1 Как выбрать между различными условиями, зависящими от другой переменной
  • 1 Преимущество привязки функций к именам в локальных областях?
  • 4 Gradle 5.x — Ошибка публикации моей библиотеки в Maven Local
  • 0 Возникли проблемы при запуске с AngularJS
  • 1 Группировать массив объектов javascript на основе значения в свой собственный массив объектов
  • 1 Identity Toolkit API ранее не использовался в проекте или он отключен
  • 1 Python: причина ошибки типа с неправильным числом аргументов
  • 1 cordova-plugin-ionic-webview — пользовательская схема не работает на Android
  • 1 проверка времени с использованием аннотаций
  • 0 Вставка данных из базы данных в массив и внедрение этих данных в текстовую область
  • 1 Как найти ключевое слово над несколькими файлами с помощью VsVim
  • 0 Маржа не отображается должным образом
  • 1 Как составить список строк
  • 0 Заголовки не отправляются в PHP
  • 0 SQL Получить два столбца с Да или Нет
  • 0 Связанный шаблон стека и куча ошибок
  • 0 Почему это работает? Очистка объекта JavaScript, используемого в качестве формы
  • 1 Xming: почему JFrame потерял фокус, когда установлен Undecorated (true)?
  • 1 Как заменить вхождения с Javascript внутри разделителей?
  • 1 чтение карт и добавление очков
  • 0 ASP.NET MVC4 проверка подлинности телефонного промежутка
  • 0 Как выбрать в MySQL данные | xx | xx | xx |
  • 0 Как добавить сервисную ссылку в библиотеку C #?
  • 1 Ошибка метеора: ENOTEMPTY: каталог не пуст
  • 0 Ошибка MySQL: 1251 не может добавить внешний ключ
  • 1 Как я могу отфильтровать XML-файл с атрибутом?
  • 1 Java org / objectweb / asm / ClassVisitor не найден
  • 0 Как зарегистрировать файлы .DLL в 64-битной ОС Windows 8?
  • 0 Разложение LU в c ++ не работает на больших матрицах
  • 0 Предупреждение: preg_match () [function.preg-match]: без конечного разделителя ‘^
  • 1 преобразование температуры Java в GUI
  • 0 Как получить метку времени из строки даты с часовым поясом, PHP?
  • 0 Удаление определенного эффекта jquery
  • 0 Не удается заставить кнопки радио работать в режиме ng-repeat с надписями со шрифтами
  • 1 Возможная ошибка с внедрением зависимости на MvvmCross
  • 0 Я должен обновить страницу AngularJS, чтобы увидеть, добавил ли я что-то
  • 0 Элемент Div отображается за пределами родительского элемента div
Читайте также:  Режим работы php lsapi

Источник

Создать круг внутри круга

Закрашивание круга при наведение на другой круг
Есть два круга: один закрашен,другой нет. Если наведу курсор на второй круг,то первый перестанет.

Круг внутри активного элемента
Здравствуйте,вопрос. Сделал чтоб когда нажимаешь на ссылку,вокруг активной кнопки появляется овал.

Кривые линии внутри круга
Здравствуйте, недавно начал заниматься всём что связано в web-программирование. И тут нашёл чем.

Поставить круг по центру белого блока и поставить цифру «1» в центре самого круга
Мне нужно поставить круг по центру белого блока и поставить цифру "1" по середине самого круга. Как.

Лучший ответ

Сообщение было отмечено HyPuK как решение

Решение

добавьте к этому position:relative

а внутреннему задайте position:absolute и с помощью top и left отпозиционируйте их

Добавлено через 2 минуты

div style="position:relative;width:100px;height:100px;background:red;border-radius:50px"> div style="position:absolute;top:25px;left:25px;width:50px;height:50px;background:black;border-radius:25px"> /div> /div>

Источник

Оцените статью