lil.dev
Published on

๐ŸŽ‰ ์ปฌ๋Ÿฌ๋ฆฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ #16 css ์ˆ˜์ •

๊ธ€์“ด์ด

    ๐Ÿ“Œ

    Welcome

    โœจ ์ปฌ๋Ÿฌ๋ฆฌ์ŠคํŠธ ์‚ฌ์ดํŠธ(์•„์ง ์—†์Œ

    tailwind์™€ css ์‚ฌ์šฉ

    ์˜ค๋Š˜๋„ ์ด์–ด์ง€๋Š” ํƒˆ pico.css์˜ ์‹œ๊ฐ„..
    ์ด๋Ÿฐ ์ €๋Ÿฐ css๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ์–ด๋Š ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ ์šฉ๋˜์—ˆ๋Š”์ง€
    ๋””ํŽœ๋˜์‹œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ ์ดˆ๋ฐ˜์— ๊ธฐ๋ณธ์ ์ธ css๋ฅผ ์ž…ํž ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ pico.css๋ฅผ ์—†์• ๊ณ 
    tailwind.css์™€ daisy UI๋ฅผ ๋Œ€์‹  ์ ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ด๋‹ค.

    width๋ฅผ ref๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ€์ ธ์˜ค๊ธฐ

    ์ด์ „์—๋Š” with๊ฐ€ 240์œผ๋กœ ๊ณ ์ •๊ฐ’์ด์—ˆ๋Š”๋ฐ, ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ํ•˜๊ธฐ์—๋Š” ๊ณ ์ •๋œ ๊ฐ’์ด ์•ˆ๋งž๊ธฐ๋„ ํ•˜๊ณ 
    ๋‘ ๊ฐœ์˜ table์ด ์„œ๋กœ ๊ฒน์ณ์žˆ์–ด ๋ฌธ์ œ์˜€๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ref๋ฅผ ์ด์šฉํ•ด
    ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ๊ฐ€๋กœ ๋„ˆ๋น„๋ฅผ ๊ฐ€์ ธ์™€์„œ table์˜ ๊ฐ€๋กœ ๋„ˆ๋น„๋ฅผ ์ •ํ•ด์ฃผ๋„๋ก ๋ณ€๊ฒฝํ–ˆ๋‹ค.

    1. width๊ฐ€ 240์œผ๋กœ ๊ณ ์ • ๊ฐ’์ด์—ˆ๋Š”๋ฐ...
    2. ๊ทธ๋Ÿฌ๋ฉด ํŒ”๋ ˆํŠธ ๋ฐ•์Šค ํฌ๊ธฐ์— ๋”ฐ๋ผ์„œ... ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋‚˜?
    3. table์˜ ํ˜„์žฌ width๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐ€์ ธ์˜ค์ง€?
    4. table์„ useRef๋ฅผ ์จ์„œ ๊ฐ€์ ธ์˜ค๊ณ 
    5. tableRef.current?.clientWidth๋ฅผ ์จ์„œ width ํ”„๋กœํผํ‹ฐ๋ฅผ ๊บผ๋‚ด๋ฉด ๋˜๊ฒ ๊ตฌ๋‚˜~

    ref๋Š” dom element๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑฐ~

    useRef ๋ฆฌ์•กํŠธ beta ๋ฌธ์„œ

    const tableRef = useRef<HTMLTableElement>(null);
    
    console.log(tableRef.current) // table ์š”์†Œ๊ฐ€ ๋“ค์–ด์žˆ์Œ
    
    const width = tableRef.current?.clientWidth ?? 480; // table ์š”์†Œ์˜ ๊ฐ€๋กœ ๊ธธ์ด(ํ”ฝ์…€๋กœ)
    
    <table ref={tableRef} className="selectedContainer w-full">
    

    gap์œผ๋กœ ๊ฐ„๊ฒฉ ์ฃผ๊ธฐ

    margin์ด๋‚˜ padding์œผ๋กœ ๊ฐ„๊ฒฉ์„ ์ฃผ๋Š” ๊ฒƒ๋ณด๋‹ค
    gap์„ ์ฃผ๋Š” ๊ฒŒ ๋” ์ข‹๋‹ค๊ณ  ๋“ค์–ด์„œ tailwind.css๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ gap์„ ๋งŽ์ด ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

    ์ด๋ฏธ์ง€ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“ค๊ธฐ

    ์ด๊ฒƒ๋„ cssํŒŒ์ผ๋กœ ํ–ˆ์„ ๋•Œ๋Š” border์— ๊ฐ’์„ ์ฃผ์—ˆ๋Š”๋ฐ
    tailwind์—์„œ๋Š” round-full๋กœ ์ฃผ์—ˆ๋‹ค.

    ํ…Œ๋งˆ ์„ ํƒ

    ๋ฐ์ด์ง€ UI ํ…Œ๋งˆ ์„ ํƒ ๋ฌธ์„œ ๋ฐ์ด์ง€ UI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ƒ‰์ƒ ํ…Œ๋งˆ๋ฅผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ
    ์ง€๊ธˆ ํ™”๋ฉด์€ ๋…ธ๋ž€์ƒ‰์ด ๋ฉ”์ธ ์ปฌ๋Ÿฌ๋ผ์„œ bumblebeeํ…Œ๋งˆ๋ฅผ ์ ์šฉํ–ˆ๋‹ค.

    ๋ฐ˜์‘ํ˜• UI ๋งŒ๋“ค๊ธฐ

    tailwind๋กœ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ์„ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

    ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ width ๋น„์œจ์ด ๋‹ฌ๋ผ์ง€๊ฒŒ

    w-1/3 === width: 33.3333%;

    w-1/2 lg:w-1/3 === ํ™”๋ฉด์ด ์ž‘์„ ๋•Œ์—๋Š” width: 50% ์ปค์ง€๋ฉด width: 33.3333%;

    w-full sm:w-1/3 lg:w-1/2 === ์ •๋ง ์ž‘์œผ๋ฉด width: 100% ํ™”๋ฉด์ด ์ข€ ์ž‘์„ ๋•Œ์—๋Š” width: 50%; ์ปค์ง€๋ฉด width: 33.333%;

    ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ฐ€๋กœ ์„ธ๋กœ

    flex-row === flex-direction: row ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜

    flex-col sm:flex-row ํ™”๋ฉด์ด sm๋ณด๋‹ค ์ž‘์œผ๋ฉด ์„ธ๋กœ๋กœ ๋ฐฐ์น˜, ํ™”๋ฉด์ด sm(ํ•ธ๋“œํฐ)๋ณด๋‹ค ํฌ๋ฉด ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜

    // ๊ฒฐ๊ณผ
    <div className="w-full flex flex-col sm:flex-row pt-16 pb-16 gap-2">
      <div className="h-full w-full sm:w-1/2 lg:w-1/3">
        <img > {/* ํ”„๋กœํ•„ ์‚ฌ์ง„*/}
      </div>
    </div>