segments dans un cercle en utilisant css: une exploration des techniques
créant un cercle dans CSS en utilisant la propriété Radius de bordure est une technique bien connue. Cependant, est-il possible de segmenter le cercle comme illustré dans l'image fournie? La question se pose de savoir si cela peut être réalisé sans s'appuyer sur JavaScript et uniquement via la solution HTML et CSS. Éléments
tranches inégales sans être éléments tranches égales qui nécessitent du contenu ou de l'animation
des tranches inégales qui nécessitent du contenu ou de l'animation
# f94144 0% 14.2857142857%, # f3722c 0% 28.5714285714%, # F8961E 0% 42.8571428571%, # F9C74F 0% 57.1428571429%, # 90BE6D 0% 71.4285714286%, # 43AA8B 0% 85.7142857143%, # 577590 0% 100% Cependant, cette sortie comprend des décimales inutiles et des arrêts par défaut explicites. Par conséquent, une fonction améliorée est:
@ Fonction stops ($ c) { $ n: longueur ($ c); // Nombre de tranches $ P: 100% / $ N; // tranche l'angle en% de cercle $ l: (); // liste des arrêts, initialement vide @for $ i de 1 à $ n { $ l: $ l, nth ($ c, $ i) if ($ i & gt; 1, 0%, unquote ('')) if ($ i & lt; $ n, rond ($ i * $ p), unquote ('')) } @return $ l }
$c: #f94144, #f3722c, #f8961e, #f9c74f, #90be6d, #43aa8b, #577590;
# f94144 14%, # f3722c 0% 29%, # f8961e 0% 43%, # f9c74f 0% 57%, # 90BE6D 0% 71%, # 43AA8B 0% 86%, # 577590 0%
@function stops($c) { $n: length($c); // number of slices $p: 100%/$n; // slice angle as a % of circle $l: (); // list of stops, initially empty @for $i from 1 through $n { $l: $l, nth($c, $i) 0% $i*$p } @return $l }
pour l'utiliser dans une conique-gradient (), nous définissons la classe suivante:
#f94144 0% 14.2857142857%, #f3722c 0% 28.5714285714%, #f8961e 0% 42.8571428571%, #f9c74f 0% 57.1428571429%, #90be6d 0% 71.4285714286%, #43aa8b 0% 85.7142857143%, #577590 0% 100%
Avec seulement quatre déclarations CSS, nous pouvons créer un cercle segmenté en tranches égales. Pour faire tourner les tranches, nous spécifions simplement un angle de démarrage différent pour le conique-gradient ().
@function stops($c) { $n: length($c); // number of slices $p: 100%/$n; // slice angle as a % of circle $l: (); // list of stops, initially empty @for $i from 1 through $n { $l: $l, nth($c, $i) if($i > 1, 0%, unquote('')) if($i < $n, round($i*$p), unquote('')) } @return $l }
Demo en direct:
#f94144 14%, #f3722c 0% 29%, #f8961e 0% 43%, #f9c74f 0% 57%, #90be6d 0% 71%, #43aa8b 0% 86%, #577590 0%
. Largeur: 16EM; / * régler la largeur sur le diamètre de tarte souhaité * / Ratio d'aspect: 1; / * faire un élément de tarte carré * / Border-Radius: 50%; / * Transformez le carré en disque * / / * tranches de taille égale * / arrière-plan: Gradient conic (à partir de 17DEG, # F94144 14%, # F3722C 0% 29%, # F8961E 0% 43%, # F9C74F 0% 57%, # 90BE6D 0% 71%, # 43AA8B 0% 86%, # 577590 0%) }
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3