Je voulais faire un cercle en pointillé avec CSS et je l'ai créé avec le processus suivant.
Bien que le cercle en pointillés puisse être affiché par ce processus, l'écart entre la fin et le début de la ligne en pointillés est devenu étroit et l'écart n'était pas uniforme.
.c {
width: 500px;
height: 500px;
border-width: 15px;
border-style: dashed;
border-radius: 600px;
}
<div class="c"></div>
Existe-t-il un moyen d'uniformiser l'écart? pouvons-nous également contrôler l'écart entre les tirets?
Si cela n'est pas possible avec CSS seul, nous envisageons d'utiliser JavaScript ou quelque chose de similaire.
javascript
html
css
Temani Afif
la source
la source
Réponses:
Voici une version optimisée de la
conic-gradient()
solution où vous pouvez facilement contrôler le nombre de tirets et l'espace entreAfficher l'extrait de code
Pour avoir une transparence totale, nous considérons
mask
Afficher l'extrait de code
Pour rendre les choses drôles, nous pouvons même envisager une coloration plus complexe des tirets:
Afficher l'extrait de code
Vous pouvez à coup sûr vouloir du contenu à l'intérieur afin de mieux appliquer le masque / arrière-plan sur un pseudo-élément pour éviter de masquer le contenu:
Afficher l'extrait de code
Question connexe pour obtenir plus d'idées CSS pour obtenir un résultat similaire: Graphique en secteurs CSS uniquement - Comment ajouter un espacement / un remplissage entre les tranches? . Vous trouverez des moyens plus pris en charge que
conic-gradient()
(en fait, cela ne fonctionne pas sur Firefox), mais vous devez utiliser beaucoup de code contrairement à la solution ci-dessus où un seul élément est nécessaire.En utilisant SVG, vous aurez également besoin de calculs pour vous assurer d'avoir un espacement uniforme:
Avec les variables CSS, nous pouvons le rendre plus facile, mais il n'est pas pris en charge dans tous les navigateurs (en fait, cela ne fonctionne pas dans Firefox)
Afficher l'extrait de code
Nous pouvons également facilement utiliser le SVG comme arrière-plan pour rendre les choses plus flexibles:
Afficher l'extrait de code
Lorsqu'il est utilisé comme arrière-plan, vous devez définir manuellement la valeur de sorte que vous aurez besoin d'un arrière-plan différent à chaque fois. Nous pouvons seulement rendre la couleur facile à changer en utilisant le SVG comme masque;
Afficher l'extrait de code
la source
conic-gradient()
ourepeating-conic-gradient()
. Donc, cela pourrait être une approche viable à l'avenir, mais ce n'est pas quelque chose qui peut être utilisé pour le moment, si une fonctionnalité multi-navigateur est souhaitée.Utiliser
stroke-dasharray
avec SVG.Ou vous pouvez utiliser
radial-gradient()
,repeating-conic-gradient()
fonctions sans Firefox.la source
conic-gradient
devient irrégulier pour une raison quelconque ...