سلام
میخوام وقتی روی سرچ بار اینپوتم کلیک میکنم overlay blur اتفاق بیفته ینی کل body بلور بشه جز سرچ بار ( body > :not(#search))
یه چیزی تو مایه های همین سرچ اینپوت راکت اما با blur filter
حتی با استفاده از نوشتن DOM تو خود کامپوننت ری اکتیم هم امتحان کردم اما نشد
ممنون میشم اگر کسی میدونه کمک کنه
سلام دوست عزیز
z-index بالاتر به به سرچ بار بده
ی نمونه واست زدم:
لینک کدپن
باید یه div بسازی که هر وقت روی اون اینپوت سرچ کلیک شد اون نمایش داده بشه فکر کنم اینطوری باشه اگه باگ داشت ببخشید خیلی وقته از ری اکت استفاده نکردم
function App() {
const [show, setShow] = useState(false)
return (
{ show && <div className="wrapper bg-gray-700/50 backdrop-blur" onClick={e => setShow(false)}></div> }
<input className="search z-10" onFocus={e => setShow(true)} />
)
}const Foo = () => {
const [showOverlay, setShowOverlay] = useState(false);
useEffect(() => {
showOverlay
? document.body.classList.add("overflow-hidden")
: document.body.removeAttribute("class");
return () => document.body.removeAttribute("class");
}, [showOverlay]);
return (
<>
{createPortal(
<div
className={`${!showOverlay && "hidden"} fixed z-10 w-screen h-screen inset-0 backdrop-blur-sm backdrop-brightness-50`}
></div>,
document.body,
)}
<div
className={
"flex flex-col items-center gap-y-4 w-1/2 py-6 mx-auto"
}
>
<input
type="text"
className={
"relative z-20 w-full p-2 border border-zinc-300 focus:outline-none"
}
placeholder={"Search"}
onFocus={() => setShowOverlay(true)}
onBlur={() => setShowOverlay(false)}
/>
<p></p>
</div>
</>
);
};
واسه اینکه کد چندقسمت نشه state رو لوکال نوشتم. state هایی که قرار هست توی کل پروژه ازشون استفاده بشه رو به صورت گلوبال تعریف کنید. useEffect هم واسه اسکرول هست. متن زیادی رو توی تگ p بزارید متوجه میشید چی به چیه
شاید پاسخ شما همینجا باشد
تشکر از هر سه عزیز
@mehdi8686h
@saghari
@Pouyab