Rumah > Soal Jawab > teks badan
P粉6198961452023-08-18 09:31:49
Saya tidak pasti sama ada ini menjawab soalan anda, tetapi cuba ini:
Pemilih dan gaya CSS:
Mulakan dengan menentukan pemilih CSS dan peraturan penggayaan yang diperlukan. Dengan mengandaikan bekas komponen anda mempunyai nama kelas .progressbar-container
,你可以使用相邻兄弟选择器(+
) untuk meletakkan kawasan yang ideal dan menggunakan gaya untuk menyembunyikannya bagi mengelakkan bar kemajuan daripada bertindih:
/* 使用相邻兄弟选择器(+)定位理想区域 */
.progressbar-container .h-4 + .bg-gray-200 {
display: none; /* 隐藏理想区域元素 */
}
/* 你也可以定义一个类,在满足重叠条件时应用该类 */
.overlap {
/* 根据需要应用显示/隐藏理想区域的样式 */
}
Pelaksanaan komponen:
Dalam pelaksanaan komponen React anda, anda boleh menggunakan konsep .overlap
kelas untuk mengawal tingkah laku kawasan ideal dan menilai berdasarkan keadaan bertindih:
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;
Dengan menggunakan kelas .overlap
secara bersyarat pada bekas komponen berdasarkan keadaan bertindih, pemilih adik beradik bersebelahan dalam CSS akan menyembunyikan kawasan yang dikehendaki apabila bar kemajuan bertindih. Apabila syarat tidak dipenuhi, kawasan yang ideal akan dipaparkan seperti yang diharapkan.