Comment créer des secteurs de cercle CSS parfaits
Récemment, j'ai construit une roulette à jackpot CSS, un projet qui présentait un défi unique : mettre en évidence dynamiquement les secteurs comme une aiguille les pointait. La roulette avait besoin de réactivité et de nombres de secteurs variables, excluant les solutions simples en image ou SVG. Les calculs géométriques étaient indispensables.
Mon approche consistait à faire pivoter les travées autour du centre d'un cercle et à les couper le long du rayon. La configuration initiale, détaillée ci-dessous (et disponible dans son intégralité via le lien plus bas), impliquait un style de base et une rotation incrémentielle des travées (360/secteurs, degrés de longueur). Ce n'était pas visuellement sophistiqué à ce stade.
Pour mettre en évidence un secteur, j'avais besoin de la distance entre deux points sur un cercle, étant donné le rayon et l'angle. La formule est :
<code>2 * radius * Math.sin(θ / 2)</code>
où θ est l'angle en radians. Converti pour utilisation :
<code>2 * radius * Math.sin(Math.PI / sectors.length)</code>
Ensuite, je me suis attaqué au découpage de secteurs pour éviter les chevauchements. Ma première tentative a utilisé un chemin de clip diagonal :
<code>clip-path: polygon(100% 0, 0 50%, 100% 100%);</code>
Cela a fonctionné de manière adéquate avec de nombreux secteurs, mais des défauts sont devenus apparents avec moins de secteurs, en particulier avec seulement trois, comme indiqué :
La solution consistait à calculer le point d'intersection entre la travée et le cercle, en coupant de ce point vers le centre. Cela a corrigé l'écrêtage :
La recherche a donné des formules pour les segments créés sur un rayon horizontal par la ligne reliant les points d'intersection :
Segment central :
<code>radius * (1 - Math.cos(θ / 2))</code>
Segment extérieur :
<code>radius * Math.cos(θ / 2)</code>
(θ en radians)
Le rapport entre ces segments détermine le point de détourage, conduisant à :
<code>const clipPosition = Math.cos(Math.PI / sectors.length) * 100</code>
Le corrigé clip-path
:
<code>{ 'clip-path': `polygon(100% 0, ${clipPosition}% 0, 0 50%, ${ clipPosition }% 100%, 100% 100%)` }</code>
Le résultat final, basé sur Vue, permet des tours aléatoires via des clics centraux et des tours ciblés via des clics sectoriels. (Lien vers le code complet omis, selon le texte original). Ce projet a fourni une leçon précieuse de trigonométrie pratique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Il est sorti! Félicitations à l'équipe Vue pour l'avoir fait, je sais que ce fut un effort massif et une longue période à venir. Tous les nouveaux documents aussi.

J'ai eu quelqu'un qui écrivait avec cette question très légitime. Lea vient de bloguer sur la façon dont vous pouvez obtenir les propriétés CSS valides elles-mêmes du navigateur. C'est comme ça.

Je dirais que "Site Web" correspond mieux que "Application mobile" mais j'aime ce cadrage de Max Lynch:

L'autre jour, j'ai repéré ce morceau particulièrement charmant sur le site Web de Corey Ginnivan où une collection de cartes se cassent les uns sur les autres pendant que vous faites défiler.

Si nous devons afficher la documentation à l'utilisateur directement dans l'éditeur WordPress, quelle est la meilleure façon de le faire?

Il existe un certain nombre de ces applications de bureau où l'objectif montre votre site à différentes dimensions en même temps. Vous pouvez donc, par exemple, écrire

CSS Grid est une collection de propriétés conçues pour faciliter la mise en page qu'elle ne l'a jamais été. Comme tout, il y a un peu une courbe d'apprentissage, mais Grid est

Je vois que Google Fonts a déployé un nouveau design (tweet). Comparé à la dernière grande refonte, cela semble beaucoup plus itératif. Je peux à peine faire la différence
