Я хотел сделать пунктирный круг с помощью CSS и создал его следующим образом.
Хотя этот процесс может отображать пунктирную окружность, промежуток между концом и началом пунктирной линии стал узким, и разрыв не был равномерным.
.c {
width: 500px;
height: 500px;
border-width: 15px;
border-style: dashed;
border-radius: 600px;
}
<div class="c"></div>
Есть ли способ сделать разрыв равномерным? Можем ли мы также контролировать разрыв между тире?
Если это невозможно только с помощью CSS, мы рассматриваем возможность использования JavaScript или чего-то подобного.
javascript
html
css
Темани Афиф
источник
источник
Ответы:
Вот оптимизированная версия
conic-gradient()
решения, где вы можете легко контролировать количество тире и расстояние междуПоказать фрагмент кода
Для полной прозрачности мы считаем
mask
Показать фрагмент кода
Чтобы сделать вещи забавными, мы можем даже рассмотреть более сложную окраску к черточкам:
Показать фрагмент кода
Вы наверняка захотите какой-то контент внутри, поэтому лучше примените маску / фон к псевдоэлементу, чтобы избежать маскировки контента:
Показать фрагмент кода
Связанный вопрос, чтобы получить больше идей CSS для достижения аналогичного результата: Круговая диаграмма только для CSS - Как добавить интервалы / отступы между срезами? , Вы найдете больше поддерживаемых способов, чем
conic-gradient()
(на самом деле это не работает в Firefox), но вы обязаны использовать много кода в отличие от вышеупомянутого решения, где требуется только один элемент.Используя SVG, вам также понадобятся некоторые вычисления, чтобы убедиться, что у вас одинаковый интервал:
С помощью переменных CSS мы можем сделать это проще, но это не поддерживается во всех браузерах (на самом деле это не работает в Firefox)
Показать фрагмент кода
Мы также можем легко использовать SVG в качестве фона, чтобы сделать вещи более гибкими:
Показать фрагмент кода
При использовании в качестве фона вам нужно вручную установить значение, чтобы каждый раз вам понадобился другой фон. Мы можем только легко изменить цвет, используя SVG в качестве маски;
Показать фрагмент кода
источник
conic-gradient()
илиrepeating-conic-gradient()
. Таким образом, это может быть жизнеспособным подходом в будущем, но это не то, что может быть использовано в данный момент, если требуется кросс-браузерная функциональность.Используйте
stroke-dasharray
с SVG.Или вы можете использовать
radial-gradient()
,repeating-conic-gradient()
функцию без Firefox.источник
conic-gradient
по какой-то причине становится