You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
4.8 KiB
177 lines
4.8 KiB
2 years ago
|
import React, { useRef } from "react";
|
||
|
import { Parallax, ParallaxLayer, IParallax } from "@react-spring/parallax";
|
||
|
import Introduction from "../shared/components/animated/Introduction";
|
||
|
|
||
|
// Little helpers ...
|
||
|
const url = (name: string, wrap = false) =>
|
||
|
`${
|
||
|
wrap ? "url(" : ""
|
||
|
}https://awv3node-homepage.surge.sh/build/assets/${name}.svg${
|
||
|
wrap ? ")" : ""
|
||
|
}`;
|
||
|
|
||
|
function Animated() {
|
||
|
const parallax = useRef<IParallax>(null!);
|
||
|
return (
|
||
|
<div className="w-full min-h-screen bg-[#253237]">
|
||
|
<Parallax ref={parallax} pages={3}>
|
||
|
<ParallaxLayer
|
||
|
offset={1}
|
||
|
speed={1}
|
||
|
style={{ backgroundColor: "#805E73" }}
|
||
|
/>
|
||
|
<ParallaxLayer
|
||
|
offset={2}
|
||
|
speed={1}
|
||
|
style={{ backgroundColor: "#87BCDE" }}
|
||
|
/>
|
||
|
|
||
|
<ParallaxLayer
|
||
|
offset={0}
|
||
|
speed={0}
|
||
|
factor={3}
|
||
|
style={{
|
||
|
backgroundImage: url("stars", true),
|
||
|
backgroundSize: "cover",
|
||
|
}}
|
||
|
/>
|
||
|
|
||
|
<ParallaxLayer
|
||
|
offset={1.3}
|
||
|
speed={-0.3}
|
||
|
style={{ pointerEvents: "none" }}
|
||
|
>
|
||
|
<img
|
||
|
src={url("satellite4")}
|
||
|
style={{ width: "15%", marginLeft: "70%" }}
|
||
|
/>
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer offset={1} speed={0.8} style={{ opacity: 0.1 }}>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "20%", marginLeft: "55%" }}
|
||
|
/>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "10%", marginLeft: "15%" }}
|
||
|
/>
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer offset={1.75} speed={0.5} style={{ opacity: 0.1 }}>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "20%", marginLeft: "70%" }}
|
||
|
/>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "20%", marginLeft: "40%" }}
|
||
|
/>
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer offset={1} speed={0.2} style={{ opacity: 0.2 }}>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "10%", marginLeft: "10%" }}
|
||
|
/>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "20%", marginLeft: "75%" }}
|
||
|
/>
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer offset={1.6} speed={-0.1} style={{ opacity: 0.4 }}>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "20%", marginLeft: "60%" }}
|
||
|
/>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "25%", marginLeft: "30%" }}
|
||
|
/>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "10%", marginLeft: "80%" }}
|
||
|
/>
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer offset={2.6} speed={0.4} style={{ opacity: 0.6 }}>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "20%", marginLeft: "5%" }}
|
||
|
/>
|
||
|
<img
|
||
|
src={url("cloud")}
|
||
|
style={{ display: "block", width: "15%", marginLeft: "75%" }}
|
||
|
/>
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer
|
||
|
offset={2.5}
|
||
|
speed={-0.4}
|
||
|
style={{
|
||
|
display: "flex",
|
||
|
alignItems: "center",
|
||
|
justifyContent: "center",
|
||
|
pointerEvents: "none",
|
||
|
}}
|
||
|
>
|
||
|
<img src={url("earth")} style={{ width: "60%" }} />
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer
|
||
|
offset={2}
|
||
|
speed={-0.3}
|
||
|
style={{
|
||
|
backgroundSize: "80%",
|
||
|
backgroundPosition: "center",
|
||
|
backgroundImage: url("clients", true),
|
||
|
}}
|
||
|
/>
|
||
|
|
||
|
{/* section 1 */}
|
||
|
<ParallaxLayer
|
||
|
offset={0}
|
||
|
speed={0.1}
|
||
|
onScroll={() => parallax.current.scrollTo(1)}
|
||
|
style={{
|
||
|
display: "flex",
|
||
|
alignItems: "center",
|
||
|
justifyContent: "center",
|
||
|
}}
|
||
|
>
|
||
|
<Introduction />
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer
|
||
|
offset={1}
|
||
|
speed={0.1}
|
||
|
onClick={() => parallax.current.scrollTo(2)}
|
||
|
style={{
|
||
|
display: "flex",
|
||
|
alignItems: "center",
|
||
|
justifyContent: "center",
|
||
|
}}
|
||
|
>
|
||
|
<img src={url("bash")} style={{ width: "40%" }} />
|
||
|
</ParallaxLayer>
|
||
|
|
||
|
<ParallaxLayer
|
||
|
offset={2}
|
||
|
speed={-0}
|
||
|
style={{
|
||
|
display: "flex",
|
||
|
alignItems: "center",
|
||
|
justifyContent: "center",
|
||
|
}}
|
||
|
onClick={() => parallax.current.scrollTo(0)}
|
||
|
>
|
||
|
<img src={url("clients-main")} style={{ width: "40%" }} />
|
||
|
</ParallaxLayer>
|
||
|
</Parallax>
|
||
|
</div>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export default Animated;
|