๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

img ํ˜•ํƒœ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์„œ ํƒœ์ผ์œˆ๋“œ ์ ์šฉํ•˜๊ธฐ -์ž‘์„ฑ์ค‘-

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 4. 15.
import React, { useState, useEffect } from 'react';

function ImageComponent({ src, card_benefit_title, card_benefit_summary }) {
    const [imageClass, setImageClass] = useState('');
    const [imageGapTop, setImageGapTop] = useState('');
    const [titleSum, setTitleSum] = useState('');

    useEffect(() => {
        const img = new Image();
        img.src = src;
        img.onload = () => {
            if (img.width > img.height) {
                // ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ€๋กœํ˜•์ผ ๋•Œ
                setImageClass('h-[80px] md:h-[100px] mt-[1px] md:mt-[30px]');
                setImageGapTop('gap-[30px] md:gap-[100px] top-[50px] md:top-[40px]')
                setTitleSum('mt-[30px]')
            } else {
                // ์ด๋ฏธ์ง€๊ฐ€ ์„ธ๋กœํ˜• ๋˜๋Š” ์ •์‚ฌ๊ฐํ˜•์ผ ๋•Œ
                setImageClass(' ml-[25px] md:ml-[30px] h-[120px] md:h-[150px]');
                setImageGapTop('gap-[55px] md:gap-[130px] top-[25px] md:top-[40px]')
                setTitleSum('mt-[50px]')
            }
        };
    }, [src]);

    return (
        <div className={`absolute md:left-[30px] ${imageGapTop}  p-4 m-2 flex justify-around`}>
            <img src={src} className={`${imageClass} rounded-lg shadow-lg`} alt="Dynamic styled image" />
            <div className={`md:flex md:gap-[100px] ${titleSum} md:mt-0`}>
                <p className='md:mt-[50px] md:mb-0 mb-[10px] '><div></div><div className='flex relative'><span className='hidden md:absolute md:block md:text-[50px] md:font-thin md:text-gray-200 md:top-[-15px] md:left-[-10px]'>|</span><span ><span className='font-bold'>์ œ๋ชฉ </span> <span className='md:hidden'>: </span><br className='hidden md:block ' />{card_benefit_title}</span></div></p>
                <p className='md:mt-[50px] md:mb-0 mb-[10px] '><div></div><div className='flex relative'><span className='hidden md:absolute md:block md:text-[50px] md:font-thin md:text-gray-200 md:top-[-15px] md:left-[-10px]'>|</span><span><span className='font-bold'>์š”์•ฝ </span><span className='md:hidden'>: </span><br className='hidden md:block ' />{card_benefit_summary}</span></div></p>
            </div>
        </div>
    );
}

export default ImageComponent;

๋Œ“๊ธ€