Вы можете достичь чего-то близкого к тому, что вам нужно, только с помощью CSS, но, поскольку вы не можете контролировать длину (или расстояние между ними) штрихов в стиле границы, вы, скорее всего, получите неудовлетворительный результат.в начале / в конце круга, где встречаются границы.
body {
background: #ccc;
}
.outer {
background-color: rgba(0,0,0,0.5);
width: 300px;
height: 300px;
border-radius: 50%;
box-sizing: border-box;
border: 5px solid white;
}
.inner {
width: 100%;
height: 100%;
border: 5px dashed white;
border-radius: 50%;
box-sizing: border-box;
}
<div class="outer">
<div class="inner"></div>
</div>
Но если вы можете использовать SVG, у вас есть контроль над stroke-dasharray
.img-bg {
background-image: url(https://picsum.photos/900/500);
background-size: cover;
}
.outer-circle {
position: relative;
background: transparent;
width: 20em;
height: 20em;
border-radius: 50%;
box-sizing: border-box;
border: 1em solid white;
overflow: hidden;
}
.custom-circle {
stroke-width: 10;
stroke: white;
stroke-linecap: butt;
fill: rgba(0, 0, 0, 0.5);
stroke-dasharray: 1 2.14; /* See below for an explanation */
}
.text {
margin: 0 auto;
padding: 0 1.5em;
color: white;
text-align: center;
position: absolute;
top: 50%;
font-size: 2em;
transform: translateY(-50%);
}
hr {
width: 60%
}
<section class="img-bg">
<div class="outer-circle">
<svg viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle class="custom-circle" cx="50" cy="50" r="50" />
</svg>
<div class="text">Vestibulum pellentesque ac arcu eget.<hr/></div>
</div>
</section>
Расчет значений stroke-dasharray
:
Почему магическое число 2,14?Согласно ответу Роберта на другой вопрос:
Окружность окружности / сумма значений stroke-dasharray
должна быть целым числом, если вы хотите равномерно расположенные линии ...
Мы знаем, что наш круг имеет радиус 50 (<circle ... r="50" />
).Итак, с небольшой математикой (вы можете использовать Google для этого):
C=2πr=2·π·50≈314.15927
мы рассчитываем, что наша окружность равна 314.15927
Скажем, мы хотим 100 тире ,оттуда C/100 ≈ 3.14
.Это дает нам dash-array: 1 2.14
.