J'ai rencontré un problème que je n'arrive pas à résoudre et je pense à un peu de magie CSS, mais quelle est la meilleure approche pour ce problème ?
J'ai un composant de barre de progression qui possède une zone idéale et une barre de progression réelle. Lorsque la barre de progression chevauche la zone idéale, je souhaite masquer la zone idéale comme si elle avait une valeur z plus petite. J'ai essayé cela et j'ai découvert que z-index ne fonctionne pas sur des éléments positionnés statiquement, comment puis-je reproduire ce comportement ? Voici le code du composant, qui utilise également tailwind pour le style.
importer React, { useEffect, useState } depuis 'react'; tapez ProgressbarProps = { valeur : nombre, valeurmax : nombre, pourcentageCap : nombre, zoneidéale : numéro } ; function Progressbar ({ valeur, maxValue, pourcentageCap, idealZone } : ProgressbarProps) { const [displayedPercentage, setDisplayedPercentage] = useState(0); const idéalZoneStart = 100 - idéalZone/2 ; const idéalZoneEnd = 100 + idéalZone/2 ; useEffect(() => { const actualPercentage = (valeur / maxValue) * 100 ; setDisplayedPercentage(Math.min(percentageCap, actualPercentage)); }, [valeur, valeurmax]); const progressBarColor = affichéPourcentageidéalZoneEnd ? 'bg-rouge-500' : 'bg-vert-500'; const progressBarStyle = { largeur : `${(displayedPercentage / pourcentageCap) * 100}%`, } ; const idéalZoneStyle = { à gauche : `${(idealZoneStart / pourcentageCap) * 100}%`, largeur : `${((idealZoneEnd - idealZoneStart) / pourcentageCap) * 100}%`, } ; retour ( ); } exporter la barre de progression par défaut ;
Je ne sais pas si cela répond à votre question, mais essayez ceci :
Sélecteurs et styles CSS :
Commencez par définir les sélecteurs CSS et les règles de style nécessaires. En supposant que votre conteneur de composants porte le nom de la classe
.progressbar-container
,你可以使用相邻兄弟选择器(+
) pour positionner la zone idéale et appliquer un style pour la masquer afin d'éviter que les barres de progression ne se chevauchent :Implémentation des composants :
Dans l'implémentation de votre composant React, vous pouvez utiliser le concept de
.overlap
classes pour contrôler le comportement des zones idéales et juger en fonction de conditions qui se chevauchent :En appliquant conditionnellement
.overlap
classes sur les conteneurs de composants en fonction des conditions de chevauchement, les sélecteurs frères adjacents en CSS masqueront la zone souhaitée lorsque les barres de progression se chevauchent. Lorsque les conditions ne sont pas remplies, la zone idéale s'affichera comme prévu.