diff --git a/src/components/displacement/DisplacementCard.tsx b/src/components/displacement/DisplacementCard.tsx index eb4189f2..4d3c8dc1 100644 --- a/src/components/displacement/DisplacementCard.tsx +++ b/src/components/displacement/DisplacementCard.tsx @@ -74,7 +74,7 @@ export default function DisplacementCard({ rotate: rotate, }} className={ - `w-[15.486vw] aspect-[223/240] rounded-[16px] bg-[radial-gradient(circle,rgba(0,0,0,1)_-70%,rgba(34,36,37,1)_100%);] flex flex-col items-center justify-between p-[1.111vw] lg:absolute max-lg:relative max-lg:w-full max-lg:h-full overflow-hidden md:max-lg:p-[2.083vw] max-md:p-[4.444vw] max-md:aspect-[165/240] ` + + `w-[15.486vw] aspect-[223/240] rounded-[16px] bg-[radial-gradient(circle,rgba(0,0,0,1)_-70%,rgba(34,36,37,1)_100%);] flex flex-col items-center justify-between p-[1.111vw] lg:absolute max-lg:relative max-lg:w-full max-lg:h-full overflow-hidden md:max-lg:p-[2.083vw] max-md:p-[4.444vw] max-md:aspect-[165/240] max-md:h-auto ` + className } onClick={onClick} diff --git a/src/components/pages/WebPage/PageComponents/WebInfiniteSlider/ContentSlideIphone.tsx b/src/components/pages/WebPage/PageComponents/WebInfiniteSlider/ContentSlideIphone.tsx index 89575a1e..b2bb086e 100644 --- a/src/components/pages/WebPage/PageComponents/WebInfiniteSlider/ContentSlideIphone.tsx +++ b/src/components/pages/WebPage/PageComponents/WebInfiniteSlider/ContentSlideIphone.tsx @@ -25,6 +25,7 @@ function Iphone({ active }: { active: boolean }) { muted autoPlay loop + playsInline className={`mx-auto w-[98%] h-[99%] translate-y-[0.5%] z-[7] lg:rounded-[3vw] rounded-2xl md:max-lg:rounded-[4vw] max-md:rounded-[8vw]`} /> ) : ( diff --git a/src/components/pages/WebPage/WebDemo.tsx b/src/components/pages/WebPage/WebDemo.tsx index 05990e42..20db8df4 100644 --- a/src/components/pages/WebPage/WebDemo.tsx +++ b/src/components/pages/WebPage/WebDemo.tsx @@ -31,6 +31,7 @@ export default function WebDemo() { const [showPopup, setShowPopup] = useState(false); const [iframeSrc, setIframeSrc] = useState(""); const isMobile = useMediaQuery("(max-width: 768px)"); + const [isPseudoFullscreen, setIsPseudoFullscreen] = useState(false); useEffect(() => { if (isMobile) { @@ -53,17 +54,47 @@ export default function WebDemo() { !isMobile && setShowPopup(false); }, [isMobile]); + const enablePseudoFullScreen = () => { + setIsPseudoFullscreen(true); + onFullScreenEnter(); + }; + + const disablePseudoFullScreen = () => { + setIsPseudoFullscreen(false); + onFullScreenExit(); + }; + const enableDemoFullscreenMode = useCallback( - (enableFullscreen: boolean) => { + async (enableFullscreen: boolean) => { const cur = demoRef.current; if (!cur) return; if (enableFullscreen) { - cur.requestFullscreen(); - onFullScreenEnter(); + // Проверяем поддержку Fullscreen API + if (cur.requestFullscreen) { + try { + await cur.requestFullscreen(); + setIsPseudoFullscreen(false); + onFullScreenEnter(); + } catch (error) { + console.log( + "Fullscreen API not supported, using pseudo-fullscreen instead" + ); + enablePseudoFullScreen(); + } + } else { + enablePseudoFullScreen(); + } } else if (document.fullscreenElement) { - document.exitFullscreen(); - onFullScreenExit(); + try { + await document.exitFullscreen(); + disablePseudoFullScreen(); + } catch (error) { + console.log("Error exiting fullscreen:", error); + disablePseudoFullScreen(); + } + } else { + disablePseudoFullScreen(); } }, [onFullScreenEnter, onFullScreenExit] @@ -114,7 +145,7 @@ export default function WebDemo() { index={1} className="lg:top-[8.333vw] lg:left-0 md:max-lg:!translate-y-[3.125vw]" > -
+