Skip to content
Snippets Groups Projects
AirbuddyAnim.tsx 9.3 KiB
Newer Older
Maximilian Leo Huber's avatar
Maximilian Leo Huber committed
import { useEffect, useRef, useState } from "react";

export function AirbuddyAnim(){
    const [isVisible, setVisible] = useState(false);
    const domRef = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible(entry.isIntersecting));
        });
        observer.observe(domRef.current!);
    }, []);

    const [isVisible2, setVisible2] = useState(false);
    const domRef2 = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible2(entry.isIntersecting));
        });
        observer.observe(domRef2.current!);
    }, []);

    const [isVisible3, setVisible3] = useState(false);
    const domRef3 = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible3(entry.isIntersecting));
        });
        observer.observe(domRef3.current!);
    }, []);
    
    const [isVisible4, setVisible4] = useState(false);
    const domRef4 = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible4(entry.isIntersecting));
        });
        observer.observe(domRef4.current!);
    }, []);

    
    const [isVisible5, setVisible5] = useState(false);
    const domRef5 = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible5(entry.isIntersecting));
        });
        observer.observe(domRef5.current!);
    }, []);
    
    const [isVisible6, setVisible6] = useState(false);
    const domRef6 = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible6(entry.isIntersecting));
        });
        observer.observe(domRef6.current!);
    }, []);
    
    const [isVisible7, setVisible7] = useState(false);
    const domRef7 = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible7(entry.isIntersecting));
        });
        observer.observe(domRef7.current!);
    }, []);
    
    const [isVisible8, setVisible8] = useState(false);
    const domRef8 = useRef(null)!;
    useEffect(() => {
        const observer = new IntersectionObserver(entries => {
        entries.forEach(entry => setVisible8(entry.isIntersecting));
        });
        observer.observe(domRef8.current!);
    }, []);

    return (
        <>
            {/* One */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible ? '1' : '0'}`,
                    'visibility': `${isVisible ? 'visible' : 'hidden'}`}}
                ref={domRef}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-0.webp">
                    </img>
            </div>
            {/* Two */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible2 ? '1' : '0'}`,
                    'visibility': `${isVisible2 ? 'visible' : 'hidden'}`}}
                ref={domRef2}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-1.webp">
                    </img>
            </div>
            {/* Three */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible3 ? '1' : '0'}`,
                    'visibility': `${isVisible3 ? 'visible' : 'hidden'}`}}
                ref={domRef3}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-2.webp">
                    </img>
            </div>
            {/* Four */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible4 ? '1' : '0'}`,
                    'visibility': `${isVisible4 ? 'visible' : 'hidden'}`}}
                ref={domRef4}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-3.webp">
                    </img>
            </div>
            {/* Five */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible5 ? '1' : '0'}`,
                    'visibility': `${isVisible5 ? 'visible' : 'hidden'}`}}
                ref={domRef5}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-4.webp">
                    </img>
            </div>
            {/* Six */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible6 ? '1' : '0'}`,
                    'visibility': `${isVisible6 ? 'visible' : 'hidden'}`}}
                ref={domRef6}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-5.webp">
                    </img>
            </div>
            
            {/* Seven */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible7 ? '1' : '0'}`,
                    'visibility': `${isVisible7 ? 'visible' : 'hidden'}`}}
                ref={domRef7}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-6.webp">
                    </img>
            </div>
            
            {/* Eight */}
            <div 
                className='col'
                style={{ 
                    'height': '100vh',
                    'transition': 'opacity 0.6s ease-out',
                    'opacity': `${isVisible8 ? '1' : '0'}`,
                    'visibility': `${isVisible8 ? 'visible' : 'hidden'}`}}
                ref={domRef8}>
                    <img 
                        style={{
                            'position': 'fixed',
                            'top': '20vh',
                            'left': '20vw',
                            'width': '60vw',
                            'height': '60vh',
                        }}
                        src="https://static.igem.wiki/teams/5247/landing/airbuddy/airbuddy-7.webp">
                    </img>
            </div>
            
            </>
    );
}