Bertindih div tanpa menggunakan indeks-z
P粉124070451
2023-08-17 13:56:28
<p>Saya telah menghadapi masalah yang nampaknya tidak dapat saya selesaikan dan saya sedang memikirkan beberapa keajaiban CSS, tetapi apakah pendekatan terbaik untuk masalah ini? </p>
<p>Saya mempunyai komponen bar kemajuan yang mempunyai kawasan yang ideal dan bar kemajuan sebenar. Apabila bar kemajuan bertindih dengan kawasan ideal, saya ingin menyembunyikan kawasan ideal seolah-olah ia mempunyai nilai z yang lebih kecil. Saya mencuba ini dan mendapati bahawa indeks-z tidak berfungsi pada elemen kedudukan statik, bagaimana saya boleh meniru tingkah laku ini? Berikut ialah kod untuk komponen, yang juga menggunakan tailwind untuk penggayaan. </p>
<pre class="brush:php;toolbar:false;">import React, { useEffect, useState } daripada 'react';
taip ProgressbarProps = {
nilai: nombor,
maxValue: nombor,
peratusan: nombor,
idealZone: nombor
};
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 = (nilai / maxValue) * 100;
setDisplayedPercentage(Math.min(percentageCap, actualPercentage));
}, [nilai, maxValue]);
const progressBarColor =
dipaparkanPeratusan < idealZoneStart
? 'bg-oren-500'
: dipaparkanPeratusan >
? 'bg-red-500'
: 'bg-hijau-500';
const progressBarStyle = {
lebar: `${(displayedPercentage / percentageCap) * 100}%`,
};
const idealZoneStyle = {
kiri: `${(idealZoneStart / percentageCap) * 100}%`,
lebar: `${((idealZoneEnd - idealZoneStart) / percentageCap) * 100}%`,
};
kembali (
<div className="relative">
<div className={`h-4 bulat ${progressBarColor}`} style={progressBarStyle}></div>
<div className="absolute top-0 left-0 w-full h-4 bg-gray-200" style={idealZoneStyle}></div>
</div>
);
}
eksport Bar Kemajuan lalai;</pre>
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:Pelaksanaan komponen:
Dalam pelaksanaan komponen React anda, anda boleh menggunakan konsep
.overlap
kelas untuk mengawal tingkah laku kawasan ideal dan menilai berdasarkan keadaan bertindih: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.