Круг вырезан с полностью прозрачной рамкой?

Я работаю над проектом, в котором есть кнопка «Свяжитесь с нами». Эта кнопка требует индикации состояния. Я прочитал следующую статью, в которой индикация статуса отображается на изображении аватара. Самое интересное в этом то, что у него полностью прозрачная граница (она также обрезает часть изображения, которая находится под границей индикатора).

Я хочу сделать то же самое, но с элементом кнопки, но понятия не имею, как это сделать.

Простая версия моего кода:

button {
  border-radius: 50%;
  width: fit-content;
  aspect-ratio: 1;
  border: none;
  background-color: purple;
  padding: 1rem;
}
<button>
    <img src = "chat.svg" width = "50px" />
</button>

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

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот код предназначен для работы с изображениями, но с кнопками все может быть проще.

button {
  --g: 5px;  /* gap */
  --r: 20px; /* circle size*/

  font-size: 30px;
  padding: .5em 1em;
  border-radius: .25em;
  border: none;
  background: 
   radial-gradient(calc(var(--r)/2 + var(--g)) at 100% 100%,
   #0000 95%,red);
  border-image:
    radial-gradient(50% 50%,blue 95%,#0000) 
    100%/0 var(--r) var(--r) 0/
    0 calc(var(--r)/2) calc(var(--r)/2) 0;
}
<button>Button</button>

Если вы хотите понять синтаксис border-image, прочитайте это: https://www.smashingmagazine.com/2024/01/css-border-image-property/

Почему бы не --gap и --radius? Однобуквенные переменные просто плохи.

isherwood 07.05.2024 17:36

@isherwood интересная точка зрения! Математики используют их постоянно, особенно r для радиуса.

A Haworth 07.05.2024 17:51

Я не уверен, почему это не очевидно для любого разработчика программного обеспечения. Если бы вы встретили --g в файле, вы бы понятия не имели, что это значит. В математике есть несколько общих стандартов. Это не то.

isherwood 07.05.2024 17:57

Другие вопросы по теме