Eu queria fazer um círculo pontilhado com CSS e o criei com o seguinte processo.
Embora o círculo tracejado possa ser exibido por esse processo, o espaço entre o final e o início da linha tracejada tornou-se estreito e o espaço não era uniforme.
.c {
width: 500px;
height: 500px;
border-width: 15px;
border-style: dashed;
border-radius: 600px;
}
<div class="c"></div>
Existe uma maneira de uniformizar a lacuna? também podemos controlar o espaço entre os traços?
Se isso não for possível apenas com CSS, estamos pensando em usar JavaScript ou algo semelhante.
javascript
html
css
Temani Afif
fonte
fonte
Respostas:
Aqui está uma versão otimizada da
conic-gradient()
solução, na qual você pode controlar facilmente o número de traços e o espaço entreMostrar snippet de código
Para ter total transparência, consideramos
mask
Mostrar snippet de código
Para tornar as coisas engraçadas , podemos até considerar uma coloração mais complexa dos traços:
Mostrar snippet de código
Você pode, com certeza, querer algum conteúdo interno, para aplicar melhor a máscara / plano de fundo em um pseudo elemento para evitar mascarar o conteúdo:
Mostrar snippet de código
Pergunta relacionada para obter mais idéias de CSS e obter um resultado semelhante: Gráfico de pizza somente em CSS - Como adicionar espaçamento / preenchimento entre as fatias? . Você encontrará maneiras mais suportadas do que
conic-gradient()
(na verdade, ele não funciona no Firefox), mas é necessário que você use muito código, ao contrário da solução acima, onde apenas um elemento é necessário.Usando o SVG, você também precisará de alguns cálculos para garantir um espaçamento uniforme:
Com variáveis CSS, podemos facilitar, mas não é suportado em todo o navegador (na verdade, não funciona no Firefox)
Mostrar snippet de código
Também podemos usar facilmente o SVG como plano de fundo para tornar as coisas mais flexíveis:
Mostrar snippet de código
Quando usado como plano de fundo, você precisa definir manualmente o valor para precisar de um plano de fundo diferente a cada vez. Só podemos facilitar a mudança de cor usando o SVG como máscara;
Mostrar snippet de código
fonte
conic-gradient()
ourepeating-conic-gradient()
. Portanto, essa pode ser uma abordagem viável no futuro, mas não é algo que possa ser usado no momento, se a funcionalidade entre navegadores for desejada.Use
stroke-dasharray
com SVG.Ou você pode usar
radial-gradient()
,repeating-conic-gradient()
funções sem Firefox.fonte
conic-gradient
torna-se irregular por algum motivo ...