Maison > Questions et réponses > le corps du texte
P粉6198961452023-08-18 09:31:49
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 :
/* 使用相邻兄弟选择器(+)定位理想区域 */
.progressbar-container .h-4 + .bg-gray-200 {
display: none; /* 隐藏理想区域元素 */
}
/* 你也可以定义一个类,在满足重叠条件时应用该类 */
.overlap {
/* 根据需要应用显示/隐藏理想区域的样式 */
}
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 :
import React, { useEffect, useState } from 'react'; type ProgressbarProps = { value: number, maxValue: number, percentageCap: number, idealZone: number }; function Progressbar({ value, maxValue, percentageCap, idealZone }: ProgressbarProps) { const [displayedPercentage, setDisplayedPercentage] = useState(0); const idealZoneStart = 100 - idealZone / 2; const idealZoneEnd = 100 + idealZone / 2; useEffect(() => { const actualPercentage = (value / maxValue) * 100; setDisplayedPercentage(Math.min(percentageCap, actualPercentage)); }, [value, maxValue]); const progressBarColor = displayedPercentage < idealZoneStart ? 'bg-orange-500' : displayedPercentage > idealZoneEnd ? 'bg-red-500' : 'bg-green-500'; const progressBarStyle = { width: `${(displayedPercentage / percentageCap) * 100}%`, }; return ( <div className={`relative ${displayedPercentage >= idealZoneStart && displayedPercentage <= idealZoneEnd ? 'overlap' : ''}`}> <div className={`h-4 rounded ${progressBarColor}`} style={progressBarStyle}></div> <div className="absolute top-0 left-0 w-full h-4 bg-gray-200"></div> </div> ); } export default Progressbar;
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.