Überlappen Sie ein Div, ohne den Z-Index zu verwenden
P粉124070451
2023-08-17 13:56:28
<p>Ich bin auf ein Problem gestoßen, das ich anscheinend nicht lösen kann, und denke über etwas CSS-Magie nach, aber was ist der beste Ansatz für dieses Problem? </p>
<p>Ich habe eine Fortschrittsbalkenkomponente mit einem idealen Bereich und einem tatsächlichen Fortschrittsbalken. Wenn der Fortschrittsbalken den idealen Bereich überlappt, möchte ich den idealen Bereich ausblenden, als ob er einen kleineren Z-Wert hätte. Ich habe es versucht und festgestellt, dass Z-Index bei statisch positionierten Elementen nicht funktioniert. Wie kann ich dieses Verhalten reproduzieren? Hier ist der Code für die Komponente, die auch Rückenwind für das Styling nutzt. </p>
<pre class="brush:php;toolbar:false;">import React, { useEffect, useState } from 'react';
Typ ProgressbarProps = {
Wert: Zahl,
maxValue: Zahl,
ProzentsatzCap: Zahl,
idealZone: Zahl
};
Funktion Progressbar({ value, maxValue, dependencyCap, idealZone }: ProgressbarProps) {
const [displayedPercentage, setDisplayedPercentage] = useState(0);
const idealZoneStart = 100 - idealZone/2;
const idealZoneEnd = 100 + idealZone/2;
useEffect(() => {
const currentPercentage = (value / maxValue) * 100;
setDisplayedPercentage(Math.min(percentageCap,actualPercentage));
}, [Wert, maxValue]);
const progressBarColor =
displayPercentage < idealZoneStart
? 'bg-orange-500'
: displayPercentage > idealZoneEnd
? 'bg-red-500'
: 'bg-green-500';
const progressBarStyle = {
width: `${(displayedPercentage/percentageCap) * 100}%`,
};
const idealZoneStyle = {
links: `${(idealZoneStart/percentageCap) * 100}%`,
width: `${((idealZoneEnd - idealZoneStart) /percentageCap) * 100}%`,
};
zurückkehren (
<div className="relative">
<div className={`h-4 gerundet ${progressBarColor}`} style={progressBarStyle}></div>
<div className="absolute top-0 left-0 w-full h-4 bg-gray-200" style={idealZoneStyle}></div>
</div>
);
}
Standard-Fortschrittsleiste exportieren;</pre>
我不确定这是否能解答你的问题,但可以试试这个:
CSS选择器和样式:
首先定义必要的CSS选择器和样式规则。假设你的组件容器具有类名
.progressbar-container
,你可以使用相邻兄弟选择器(+
)来定位理想区域,并应用样式来隐藏它,以防止进度条重叠:组件实现:
在你的React组件实现中,你可以利用
.overlap
类的概念来控制理想区域的行为,根据重叠条件进行判断:通过根据重叠条件在组件容器上有条件地应用
.overlap
类,CSS中的相邻兄弟选择器将在进度条重叠时隐藏理想区域。当条件不满足时,理想区域将按预期显示。