2. Style Basics

1. Basic: Class

์Šคํƒ€์ผ๋ง๊ณผ CSS

index.html ํŒŒ์ผ์— ๊ฐ„๋‹จํžˆ CSS ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

id ์„ ํƒ์ž

#id๋ช… ํ•˜๋‚˜๋งŒ ์กด์žฌ

<style>
    #greeting {
        color: #00F;
    }
</style>

class ์„ ํƒ์ž

.class๋ช… ์—ฌ๋Ÿฌ ์š”์†Œ์— ์ค‘๋ณต ์‚ฌ์šฉ ๊ฐ€๋Šฅ

<style>
    .greeting {
        color: #00F;
    }
</style>

className

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ class ์˜ˆ์•ฝ์–ด์™€ ๊ฒน์น˜๊ธฐ ๋•Œ๋ฌธ์— JSX์—์„œ๋Š” โ€œclassNameโ€์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์ง€์ •

CSS์˜ class๋Š” ์ผ๋ฐ˜์ ์ธ class์™€ ๋น„์Šท ์–ด๋–ค ํƒ€์ž…, ์†์„ฑ, ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•˜๋Š” ์ง€๋ฅผ ํ‘œํ˜„

export default function Greeting() {
    return (
        <p className="greeting">
            Hello, world!
        </p>
    );
}
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” class๋กœ ์ž๋™ ๋ณ€๊ฒฝ๋˜์–ด ๋‚˜์˜ด <p class="greeting">Hello, world!</p>

๋‹จ์ 

CSS๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ „์ œ๋กœ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์Œ ๊ทธ๋ž˜์„œ ๊ณตํ†ต๋œ ๋ถ€๋ถ„์ด ๋งŽ์„ ๋•Œ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ์‰ฝ์ง€๋งŒ, ์ปดํฌ๋„ŒํŠธ ์ค‘์‹ฌ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ž‘์—…ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ถˆํŽธํ•  ๋•Œ๊ฐ€ ๋งŽ์Œ ์žฌ์‚ฌ์šฉ์€ ๊ทธ๋ƒฅ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ

โ‡’ ์ ˆ์ถฉ์•ˆ์œผ๋กœ ์•„์ฃผ ์ž‘์€ ์Šคํƒ€์ผ ๊ทธ๋ฃน์„ ํด๋ž˜์Šค๋กœ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌ Ex. Bootstrap, Tailwind CSS ๋“ฑ์˜ ์ ‘๊ทผ๋ฒ• - primary, default ๋“ฑ

CSS, JS ํ”„๋ ˆ์ž„์›Œํฌ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ํœด๋Œ€ํฐ, ํƒœ๋ธ”๋ฆฟ, ๋ฐ์Šคํฌํƒ‘๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์—์„œ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ œ์ž‘, ์œ ์ง€, ๋ณด์ˆ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€

์˜คํ”ˆ ์†Œ์Šค CSS ํ”„๋ ˆ์ž„์›Œํฌ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ CSS ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋‹ฌ๋ฆฌ, ๋ฒ„ํŠผ์ด๋‚˜ ํ…Œ์ด๋ธ” ๋“ฑ์˜ ์š”์†Œ์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ผ๋ จ์˜ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ CSS๋ฅผ ๋ณ„๋„๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„, HTML ํŒŒ์ผ์—์„œ์˜ ๋งˆํฌ์—… ๋งŒ์œผ๋กœ ์›นํŽ˜์ด์ง€ ๊ตฌ์ถ• ๊ฐ€๋Šฅ โ‡’ utility-first ๊ธฐ๋ฒ• (๋ฏธ๋ฆฌ ๊ตฌํ˜„๋œ CSS ์‚ฌ์šฉ)

2. Basic: Inline Style

โ€œstyleโ€ ์†์„ฑ ํ™œ์šฉ

  • CSS๋Š” ์•„๋‹ˆ๊ณ , ํ‰๋ฒ”ํ•œ JavaScript ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•œ ๊ฒƒ โ†’ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›€

  • ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ์‹ค์ˆ˜ํ•˜๊ฑฐ๋‚˜ ๋ถˆํŽธํ•  ๋•Œ๊ฐ€ ์žˆ์Œ โ†’ TypeScript์˜ ํž˜์œผ๋กœ ์ž๋™ ์™„์„ฑ, ํƒ€์ž… ๊ฒ€์‚ฌ ๋“ฑ์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

export default function Greeting() {
    const style = {
        color: '#00F',
    };
    
    return (
        <p style={style}>
            Hello, world!
        </p>
    );
}
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ธ๋ผ์ธ ์Šคํƒ€์ผ๋กœ ์ ์šฉ๋จ <p style="color: rgb(255, 0, 0);">Hello, world!</p>

๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

export default function Greeting() {
    return (
        <p 
            style={{
                color: '#00F',
            }}
        >
            Hello, world!
        </p>
    );
}

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์žฅ์  ํ™œ์šฉ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œํ˜„์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์Œ ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ์ ์šฉ ๊ฐ€๋Šฅ ์—ฐ์‚ฐ ์ž‘์—…์ด ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ์†๋„๋Š” ๋Š๋ ค์ง

const darkMode = false;

function primaryColor() {
    return darkMode ? '#F00' : '#00F';
}

export default function Greeting() {
    return (
        <p style={{
            color: primaryColor(),
        }}>
            Hello!
        </p>
    );
}

3. ์˜๋ฏธ์žˆ๋Š” ๋งˆํฌ์—…

๐Ÿ™‹๐Ÿปโ€โ™€๏ธ๏ธ ์ฃผ์˜ ์‚ฌํ•ญ

์˜๋ฏธ์žˆ๋Š” ๋งˆํฌ์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” HTML Element ๋“ค์ด ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ HTML ๋งˆํฌ์—…์— ๋Œ€ํ•ด ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•œ ๋’ค ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€์‹œ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ์ฐธ๊ณ  ๋ ˆํผ๋Ÿฐ์Šค - MDN

className์„ ์‚ฌ์šฉํ•ด์„œ ์Šคํƒ€์ผ์„ ์ค˜๋„ ๋˜์ง€๋งŒ, ์ธ๋ผ์ธ๊ณผ ๋‹ค๋ฅผ ๊ฒƒ์ด ์—†์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์˜๋ฏธ์žˆ๋Š” ๋งˆํฌ์—…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

<p className="greeting font-size-16">

Semantic tag

Semantic HTML Semantics - MDN

๐Ÿ“ Semantic ์˜๋ฏธ์˜, ์˜๋ฏธ๋ก ์ ์ธ

์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋Š” ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•œ ํƒœ๊ทธ

Ex. <article> <aside> <details> <figure> <form> <footer> <header> <main> <mark> <nav> <section> <summary>

์žฅ์ 

  1. HTML ๋ฌธ์„œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง

  2. ์›น ์ ‘๊ทผ์„ฑ์ด ์ฆ๊ฐ€ - ์‹œ์ž‘ ์žฅ์• ์ธ ๋„์›€์„ ์œ„ํ•œ ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๊ธฐ ๋“ฑ์ด ํŽ˜์ด์ง€๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์‰ฌ์›Œ์ง

  3. ๊ฒ€์ƒ‰์—”์ง„์ด ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ๋•Œ HTML๋‚ด์˜ ํƒœ๊ทธ๋ฅผ ๋ถ„์„ ๊ฐ€๋Šฅ(SEO ์œ ์šฉ)

    • <article> ํƒœ๊ทธ๊ฐ€ ์‚ฌ์šฉ๋œ ์ฝ˜ํ…์ธ ๋Š” ์žฌ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ˜ํ…์ธ ๋กœ ์ธ์‹

    • <section> ํƒœ๊ทธ๋กœ ๋ฌถ์€ ์ฝ˜ํ…์ธ ๋Š” ์žฌ๋ฐฐํฌ๋ฅผ ๊ธˆ์ง€ํ•˜๋Š” ์ฝ˜ํ…์ธ ๋กœ ์ธ์‹

โœ๏ธ ์กฐ๊ฐ๊ธ€

๊ณผ์ œ๋ฅผ ํ•  ๋•Œ <table> ๊ด€๋ จ ์š”์†Œ๋ฅผ ๋ชฐ๋ผ์„œ ํ—ค๋งธ์—ˆ๋‹ค. HTML ์š”์†Œ์— ๋Œ€ํ•œ ์ฒด๊ณ„์ ์ธ ํ•™์Šต์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ์ฝ”๋”ฉ์„ ํ•˜๋ฉด์„œ ๊ทธ๋•Œ ๊ทธ๋•Œ MDN ๋“ฑ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด๋ฉฐ ์ž˜๋ชป ์•Œ๊ณ ์žˆ๋Š” ๋‚ด์šฉ์ด๋‚˜ ๋ถ€์กฑํ•˜๊ฒŒ ์•Œ๋˜ ๋‚ด์šฉ์„ ํ•™์Šตํ•˜๊ณ  ์žˆ๋‹ค. ์‹œ๋งจํ‹ฑํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ๊ฐ ํƒœ๊ทธ์˜ ์„ธ๋ถ€ ์š”์†Œ๋ฅผ ์ž˜ ์ˆ™์ง€ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž.

Last updated