๐๏ธ 02. ์๋งจํฑ HTML: div ๊ณตํ๊ตญ์์ ํ์ถํ๋ ๋ฒ
๐ ๊ฐ์
article, section, aside, nav, main, header, footer โ ์๋ฏธ ์๋ ํ๊ทธ ํ๋๊ฐ SEO, ์ ๊ทผ์ฑ, ์ ์ง๋ณด์๋ฅผ ํ ๋ฒ์ ํด๊ฒฐํ๋ ์ด์ ๋ฅผ ํํค์นฉ๋๋ค.
๐ ์ด ๋ฌธ์๋ฅผ ์ฝ๊ธฐ ์ ์
โฑ๏ธ ์์ ์ฝ๊ธฐ ์๊ฐ: 18๋ถ / ํต์ฌ ํํธ๋ง: 10๋ถ
๐บ๏ธ ์ด ๋ฌธ์์ ํ๋ฆ
[div ๋จ์ฉ์ ํํด] โ [์๋งจํฑ ํ๊ทธ ์ด์ ๋ฆฌ] โ [article vs section ๊ฒฐ์ ํธ๋ฆฌ] โ [Next.js ์ปดํฌ๋ํธ์์ ์ฐ๊ณ]
๐ฏ ์ด ๋ฌธ์๋ฅผ ๋ค ์ฝ์ผ๋ฉด ํ ์ ์๋ ๊ฒ
-
<div>๋์ ์จ์ผ ํ ์๋งจํฑ ํ๊ทธ๋ฅผ ์ํฉ์ ๋ง๊ฒ ์ ํํ ์ ์๋ค. -
<article>๊ณผ<section>์ ์ฐจ์ด๋ฅผ ์๋ฆฌ๋ก ์ค๋ช ํ ์ ์๋ค. - ์๋งจํฑ HTML์ด SEO์ ์คํฌ๋ฆฐ๋ฆฌ๋์ ๋ฏธ์น๋ ์ํฅ์ ์ค๋ช ํ ์ ์๋ค.
- React/Next.js ์ปดํฌ๋ํธ์์ ์๋งจํฑ ํ๊ทธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉํ ์ ์๋ค.
๐บ๏ธ ์ด ๋ฌธ์์ ๋ฐฐ๊ฒฝ ์ธ๊ณ๊ด: '์์๋ค ์ปค๋ฎค๋ํฐ'
- ๐ฃ ์์ฒ ( ์ ์
): "์ํธ ๋, ์ ์ง๊ธ๊น์ง ๋ชจ๋ ๋ ์ด์์์
<div>๋ก ์ก์๋๋ฐ์, ๋ญ๊ฐ ๋ฌธ์ ์ธ๊ฐ์? ํ๋ฉด์๋ ๋๊ฐ์ด ๋์ค๊ณ , ๊ธฐ๋ฅ๋ ๋ค ๋ผ์. ๊ทผ๋ฐ ์์ ๋์ด '์๋งจํฑํ๊ฒ ์ง์ผ ํ๋ค'๊ณ ๊ณ์ ์๊ธฐํ๋๋ฐ, ์์งํ<div>์ ์ง์ด๋ฃ๊ณ CSS ์ ํ๋ฉด ๋๊ฐ์ง ์๋์?" - ๐ฆ ์ํธ ( ๋ฆฌ๋ ): "ํ๋ฉด์ ๋ณด์ด๋ ๊ฒ ๋๊ฐ๋ค๊ณ ์ฝ๋๊ฐ ๋๊ฐ์ ๊ฑด ์๋์์. ๋ธ๋ผ์ฐ์ ๋
<div>๋ฅผ ๋ณด๋ฉด '์ด๊ฒ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๋ค'๊ณ ํด์. ๊ทผ๋ฐ<article>์ ๋ณด๋ฉด '์, ์ด๊ฑด ๋ ๋ฆฝ์ ์ธ ์ฝํ ์ธ ๋ฉ์ด๋ฆฌ๊ตฌ๋'๋ผ๊ณ ๋ฐ๋ก ํ์ ํด์. ๊ตฌ๊ธ ๋ด, ์คํฌ๋ฆฐ๋ฆฌ๋, ์ฌ์ง์ด 6๊ฐ์ ํ์ ์์ฒ ๋๋ ์๋งจํฑ ํ๊ทธ๊ฐ ์์ด์ผ ์ฝ๋๋ฅผ ์ฝ์ ์ ์์ด์."
๐ค ์ ์์์ผ ํ๋๊ฐ
์์๋ค ์ปค๋ฎค๋ํฐ SEO ๊ฐ์ ์์ ์ ๋งก์ ์์ฒ ์ด, Google Search Console์ ์ด์๋ค.
๐ฃ ์์ฒ : "์๋... ์ฐ๋ฆฌ ์ปค๋ฎค๋ํฐ ๊ธ์ด ๊ตฌ๊ธ์ ์ ๋๋ก ๋์์ผ ํ๋๋ฐ ์ ์ด๋ ๊ฒ ๊ฒ์ ์์๊ฐ ๋ฎ์์?"
๐ ์์(PM): "๊ฐ๋ฐ์ ๋ถ๋ค ๋์ ์ข ๋ฐ์์ผ ํ ๊ฒ ๊ฐ์์. ๊ฒ์ ์์ง ์ต์ ํ ์ ์๊ฐ ๋๋ฌด ๋ฎ์์."
์์ฒ ์ด์ ๊ธฐ์กด ์ฝ๋:
<!-- โ ์์ฒ ์ด์ ์ต์ด ์ฝ๋: div ๊ณตํ๊ตญ -->
<div class="wrapper">
<div class="header">
<div class="logo">์์๋ค ์ปค๋ฎค๋ํฐ</div>
<div class="nav">
<div class="nav-item">ํ</div>
<div class="nav-item">๊ฒ์ํ</div>
</div>
</div>
<div class="main">
<div class="post">
<div class="post-title">๋ฆฌ์กํธ ์ํ๊ด๋ฆฌ ์ด๋ป๊ฒ ํ๋์?</div>
<div class="post-content">์ ๋ ์์ฆ Zustand๋ฅผ ์ฐ๋๋ฐ...</div>
</div>
</div>
<div class="sidebar">
<div class="popular-posts">์ธ๊ธฐ ๊ฒ์๊ธ</div>
</div>
</div>์ด ์ฝ๋๋ฅผ ๊ตฌ๊ธ ๋ด์ด ์ฝ์ผ๋ฉด? <div> ๋ ๊ตฌ๊ธ์๊ฒ ์์ ํ ์๋ฏธ ์๋ ๊ทธ๋ฆ์ด์ผ. "์ฌ๊ธฐ๊ฐ nav์ธ์ง, main์ธ์ง, footer์ธ์ง" ์ ํ ์ ์ ์์ด.
๐๏ธ 1. ์๋งจํฑ ํ๊ทธ ์ด์ ๋ฆฌ โ ๊ฐ ํ๊ทธ์ '์ญํ ์นด๋'
1-1. ํ์ด์ง ๋ ๋ฒจ ๊ตฌ์กฐ ํ๊ทธ
<!-- โ
5๋
์ฐจ์ ์ฝ๋: ์๋งจํฑ ํ๊ทธ๋ก ์๋ฏธ ์๋ ๊ตฌ์กฐ -->
<body>
<header> <!-- ์ต์์: ์ฌ์ดํธ ๋ก๊ณ , ๋ฉ์ธ ๋ด๋น๊ฒ์ด์
-->
<nav> <!-- ๋ด๋น๊ฒ์ด์
๋งํฌ ๋ฌถ์ -->
<ul>
<li><a href="/">ํ</a></li>
<li><a href="/posts">๊ฒ์ํ</a></li>
</ul>
</nav>
</header>
<main> <!-- ํ์ด์ง์ ํต์ฌ ์ฝํ
์ธ : ํ์ด์ง๋น ๋ฑ ํ๋๋ง -->
<article> <!-- ๋
๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ/๊ณต์ ๋ ์ ์๋ ์๊ฒฐ๋ ์ฝํ
์ธ -->
<h1>๋ฆฌ์กํธ ์ํ๊ด๋ฆฌ ์ด๋ป๊ฒ ํ๋์?</h1>
<p>์ ๋ ์์ฆ Zustand๋ฅผ ์ฐ๋๋ฐ...</p>
</article>
</main>
<aside> <!-- ๋ณธ๋ฌธ๊ณผ ๊ฐ์ ์ ์ผ๋ก ์ฐ๊ด๋ ๋ณด์กฐ ์ฝํ
์ธ -->
<h2>์ธ๊ธฐ ๊ฒ์๊ธ</h2>
</aside>
<footer> <!-- ์ ์๊ถ, ์ฐ๋ฝ์ฒ, ๋ถ๊ฐ ๋งํฌ -->
<p>ยฉ 2025 ์์๋ค ์ปค๋ฎค๋ํฐ</p>
</footer>
</body>๊ฐ ํ๊ทธ๊ฐ ๋ธ๋ผ์ฐ์ /๊ฒ์์์ง์๊ฒ ์ ๋ฌํ๋ ์๋ฏธ:
| ํ๊ทธ | ARIA Role | ๋ธ๋ผ์ฐ์ /๊ฒ์์์ง์ด ์ดํดํ๋ ์๋ฏธ |
|---|---|---|
<header> | banner | "์ด ํ์ด์ง/์น์ ์ ์๊ฐ์ ๋ค๋น๊ฒ์ด์ ์ด ์์ด์" |
<nav> | navigation | "์ด๊ฑด ๋ด๋น๊ฒ์ด์ ๋งํฌ ๋ชจ์์ด์์" |
<main> | main | "์ด ํ์ด์ง์ ํต์ฌ ์ฝํ ์ธ ๋ ์ฌ๊ธฐ์์" (ํ์ด์ง๋น 1๊ฐ) |
<article> | article | "๋ ๋ฆฝ์ ์ผ๋ก ๋ฏ์ด๋ด๋ ์๋ฏธ๊ฐ ์์ ํ ์ฝํ ์ธ ์์" |
<section> | region | "๊ฐ์ ์ฃผ์ ๋ฅผ ๋ฌถ์ ์น์ ์ด์์" |
<aside> | complementary | "๋ณธ๋ฌธ๊ณผ ๊ฐ์ ์ฐ๊ด๋ ๋ณด์กฐ ์ ๋ณด์์" |
<footer> | contentinfo | "์ ์๊ถ, ์ฐ๋ฝ์ฒ ๋ฑ ํ๋จ ์ ๋ณด์์" |
๐ 2. article vs section โ ๊ฐ์ฅ ๋ง์ด ํท๊ฐ๋ฆฌ๋ ์
๐ฃ ์์ฒ : "์, ๊ทผ๋ฐ์. <article> ์ด๋ <section> ์ด ์ ์ผ ํท๊ฐ๋ ค์. ๋ ๋ค ์ฝํ
์ธ ๋ฌถ๋ ๊ฑฐ ์๋๊ฐ์?"
๐ฆ ์ํธ ๋ฆฌ๋: "๋ฑ ํ๋๋ง ๊ธฐ์ตํด์. <article> ์ RSS, ์นด์นด์คํก์ผ๋ก ๊ณต์ ํ์ ๋ ๊ทธ๊ฒ๋ง ๋ฐ๋ก ๋ด๋ ๋ง์ด ๋๋ ์ฝํ
์ธ ์์. <section> ์ ํ์ด์ง ์์์๋ง ์๋ฏธ๊ฐ ์๋ ์ฃผ์ ๋ณ ์ฑํฐ๊ณ ์."
๊ฒฐ์ ํธ๋ฆฌ๋ก ์ดํดํ๊ธฐ
์ด ์ฝํ
์ธ ๋ธ๋ก์ด...
Q1. ํผ์ ๋ผ์ด๋ด์ ๊ณต์ ํด๋ ์๋ฏธ๊ฐ ํตํ๋๊ฐ?
โโ YES โ <article> (๋ธ๋ก๊ทธ ํฌ์คํธ, ๋๊ธ, ๋ด์ค ๊ธฐ์ฌ, ์ ํ ์นด๋)
โโ NO โ Q2. ๊ฐ์ ์ฃผ์ ๋ก ๋ฌถ์ธ ์ฑํฐ์ธ๊ฐ?
โโ YES โ <section> (ํ์ด์ง ๋ด ํญ, ์๊ฐ/๊ธฐ๋ฅ/๊ฐ๊ฒฉ ์น์
)
โโ NO โ ๊ทธ๋ฅ ์คํ์ผ์ฉ์ด๋ฉด <div>
<!-- ์์๋ค ์ปค๋ฎค๋ํฐ ๊ฒ์๊ธ ์์ธ ํ์ด์ง ์ค์ ์์ -->
<main>
<!-- article: ์ด ๊ฒ์๊ธ ์์ฒด๊ฐ ๋
๋ฆฝ์ ์ธ ์ฝํ
์ธ ๋จ์ -->
<article>
<h1>๋ฆฌ์กํธ ์ํ๊ด๋ฆฌ ๋น๊ต: Zustand vs Jotai</h1>
<p>์ ๋ ์์ฆ Zustand๋ฅผ ์ฐ๋๋ฐ, Jotai์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ...</p>
<!-- section: article ์์ ์ฑํฐ ๊ตฌ๋ถ -->
<section>
<h2>Zustand ์ฅ๋จ์ </h2>
<p>...</p>
</section>
<section>
<h2>Jotai ์ฅ๋จ์ </h2>
<p>...</p>
</section>
<!-- article ์์ article: ๋๊ธ๋ ๋
๋ฆฝ์ ์ธ ์ฝํ
์ธ -->
<section>
<h2>๋๊ธ 3๊ฐ</h2>
<article>
<h3>์์ฒ ๋์ ๋๊ธ</h3>
<p>์ ๋ Zustand ์๋๋ค!</p>
</article>
<article>
<h3>์ํธ ๋์ ๋๊ธ</h3>
<p>์๋ฆฌ๋ถํฐ ํ์
ํ์ธ์.</p>
</article>
</section>
</article>
</main>๐ 3. ํค๋ฉ ๊ณ์ธต๊ตฌ์กฐ โ H1~H6์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ
์๋งจํฑ HTML์์ ํค๋ฉ ๊ณ์ธต ์ ๋ฌธ์์ ๋ชฉ์ฐจ๋ ๋ค๋ฆ์์ด. ์คํฌ๋ฆฐ๋ฆฌ๋ ์ฌ์ฉ์๋ ํค๋ฉ์ผ๋ก ํ์ด์ง๋ฅผ ํ์ํ๊ฑฐ๋ .
<!-- โ ํํ ์ค์: ํฌ๊ธฐ ๋๋ฌธ์ ํค๋ฉ ๋ ๋ฒจ์ ์ ํ -->
<h1>์์๋ค ์ปค๋ฎค๋ํฐ</h1>
<h3>๋ฆฌ์กํธ ๊ฒ์ํ</h3> <!-- h2 ๊ฑด๋๋! -->
<h5>์ธ๊ธฐ ๊ธ ์ ๋ชฉ</h5> <!-- h4 ๊ฑด๋๋! -->
<!-- ํด๊ฒฐ์ฑ
: CSS๋ก ํฌ๊ธฐ ์กฐ์ , ํค๋ฉ ๋ ๋ฒจ์ ๋
ผ๋ฆฌ์ ๊ณ์ธต์ผ๋ก -->
<!-- โ
์ฌ๋ฐ๋ฅธ ํค๋ฉ ๊ณ์ธต -->
<body>
<header>
<h1>์์๋ค ์ปค๋ฎค๋ํฐ</h1> <!-- ํ์ด์ง๋น H1์ ๋ฑ ํ๋ -->
</header>
<main>
<h2>๋ฆฌ์กํธ ๊ฒ์ํ</h2>
<article>
<h3>๊ฒ์๊ธ ์ ๋ชฉ</h3>
<section>
<h4>๋๊ธ</h4>
</section>
</article>
</main>
</body>๐ SEO ์ฐ๊ฒฐ ๊ณ ๋ฆฌ
Google ๊ฒ์ ๋ด์ H1์ด ๋จ ํ๋์ฌ์ผ ํ๋ค๊ณ ๊ฐํ๊ฒ ๊ถ์ฅํด์. H1์ "์ด ํ์ด์ง๊ฐ ๋ฌด์์ ๊ดํ ํ์ด์ง์ธ์ง" ๋ฅผ ์ ์ธํ๋ ๊ฐ์ฅ ์ค์ํ ์ ํธ๊ฑฐ๋ ์. H1์ด ์ฌ๋ฌ ๊ฐ์ด๊ฑฐ๋ ์์ผ๋ฉด ํ์ด์ง ์ฃผ์ ๋ฅผ ์๋ชป ํ์ ํด์ ๊ฒ์ ์์์ ๋ถ๋ฆฌํ๊ฒ ์์ฉํด์.
โ๏ธ 4. React/Next.js ์ปดํฌ๋ํธ์์์ ์๋งจํฑ HTML
๐ฃ ์์ฒ : "๊ทผ๋ฐ React์์๋ ์ปดํฌ๋ํธ๋ก ์ชผ๊ฐ๋๊น, ์ด์ฐจํผ <div> ๋ก ๊ฐ์ธ๋ ๊ฑฐ ์๋๊ฐ์?"
๐ฆ ์ํธ ๋ฆฌ๋: "๋ฐ๋ก ๊ทธ ์ฐฉ๊ฐ์ด ๋ง์ React ์ฝ๋๋ฒ ์ด์ค๋ฅผ div ๊ณตํ๊ตญ์ผ๋ก ๋ง๋ค์ด์. ์ปดํฌ๋ํธ = JSX ๋ํผ = ๋ฐ๋์ <div> ๋ผ๋ ๊ณต์์ ํ๋ ค์."
// โ div ๋จ์ฉ ํจํด: ์๋ฏธ ์๋ div๊ฐ DOM์ ์์
function PostList() {
return (
<div>
{posts.map(post => (
<div key={post.id} className="post-card">
<div className="post-title">{post.title}</div>
<div className="post-content">{post.content}</div>
</div>
))}
</div>
);
}
// โ
์๋งจํฑ ํจํด: ์๋ฏธ ์๋ ํ๊ทธ ์ฌ์ฉ
function PostList() {
return (
<section aria-label="๊ฒ์๊ธ ๋ชฉ๋ก">
{posts.map(post => (
// article: ๊ฐ ๊ฒ์๊ธ์ ๋
๋ฆฝ์ ์ธ ์ฝํ
์ธ ๋จ์
<article key={post.id}>
<h2>{post.title}</h2>
<p>{post.content}</p>
</article>
))}
</section>
);
}// Next.js ๋ ์ด์์ ์ปดํฌ๋ํธ: ์๋งจํฑ ๋ผ๋ ๊ณ ์
// app/layout.tsx
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="ko">
<body>
<header>
<nav>
<Link href="/">ํ</Link>
<Link href="/posts">๊ฒ์ํ</Link>
</nav>
</header>
{/* main์ด children์ ๊ฐ์ธ๋ฉด, ๋ชจ๋ ํ์ด์ง์ ํต์ฌ ์ฝํ
์ธ ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ํ๋จ */}
<main>{children}</main>
<footer>
<p>ยฉ 2025 ์์๋ค ์ปค๋ฎค๋ํฐ</p>
</footer>
</body>
</html>
);
}React Fragment ํ์ฉ: ๋ถํ์ํ DOM ๋ ธ๋๋ฅผ ๋ง๋ค์ง ์์ผ๋ฉด์ ์ฌ๋ฌ ์๋งจํฑ ์์๋ฅผ ๋ฐํํ ์ ์์ด.
// Fragment๋ก ๋ถํ์ํ div ๋ํผ ์ ๊ฑฐ
function ArticleWithSidebar() {
return (
<>
<article>
<h1>๊ฒ์๊ธ ์ ๋ชฉ</h1>
</article>
<aside>
<h2>๊ด๋ จ ๊ธ</h2>
</aside>
</>
);
}๐ ํต์ฌ ํจํด ์ด์ ๋ฆฌ
| ์ํฉ | ์ธ ํ๊ทธ | ์ ๋ ์ฐ์ง ๋ง ๊ฒ |
|---|---|---|
| ์ฌ์ดํธ ๋ก๊ณ + ๋ฉ์ธ ๋ด๋น | <header> + <nav> | <div class="header"> |
| ํ์ด์ง ํต์ฌ ์ฝํ ์ธ ์์ญ | <main> | <div id="content"> |
| ๋ธ๋ก๊ทธ ๊ธ, ๋ด์ค, ๋๊ธ | <article> | <div class="post"> |
| ํ์ด์ง ๋ด ์ฑํฐ/ํญ ๊ตฌ๋ถ | <section> (h์์ ํ์) | <div class="tab"> |
| ๋ณธ๋ฌธ ์ฐ๊ด ๋ณด์กฐ ์ ๋ณด | <aside> | <div class="sidebar"> |
| ์ ์๊ถ/์ฐ๋ฝ์ฒ ํ๋จ | <footer> | <div class="footer"> |
| ์์ ์คํ์ผ ๋ํ | <div> | โ |
๐ ๋ง๋ฌด๋ฆฌ ํด์ฆ
Q1. ๋ค์ ์๋๋ฆฌ์ค์์ ๊ฐ์ฅ ์ ํฉํ HTML ํ๊ทธ๋?
์์๋ค ์ปค๋ฎค๋ํฐ์ ์ฌ์ฉ์๊ฐ ์์ฑํ ๋ฆฌ๋ทฐ ์นด๋๋ค์ด ์๋ค.
๊ฐ ๋ฆฌ๋ทฐ๋ ์ ๋ชฉ, ๋ณ์ , ๋ด์ฉ, ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ,
๋ ๋ฆฝ์ ์ผ๋ก RSS ํผ๋๋ SNS์ ๊ณต์ ๋ ์ ์๋ค.
- A)
<section> - B)
<div> - ๊ฐ)
<article> - ๋ผ)
<aside>
โ ์ ๋ต: ๊ฐ
๐ก ์์ธ ํด์ค:
- ์๋ฆฌ ์ค๋ช
:
<article>์ "๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๋ฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์๊ฒฐ๋ ์ฝํ ์ธ " ๋ฅผ ๋ํ๋ ๋๋ค. ๊ฐ ๋ฆฌ๋ทฐ๋ ๋งฅ๋ฝ ์์ด๋ ํผ์ ์๋ฏธ๊ฐ ํตํ๋ ์ฝํ ์ธ ์ด๋ฏ๋ก<article>์ด ์ ํํฉ๋๋ค. - ์ค๋ต ํผ๋๋ฐฑ:
<section>์ ํ์ด์ง ๋ด์์ ์ฑํฐ๋ฅผ ๋๋๋ ์ฉ๋๋ก, ํผ์์๋ ์๋ฏธ๊ฐ ์๊ฒฐ๋์ง ์์์.<aside>๋ ๋ณธ๋ฌธ๊ณผ ๊ฐ์ ์ฐ๊ด๋ ๋ณด์กฐ ์ ๋ณด์,<div>๋ ์์ ์คํ์ผ ๋ํ์ ์จ์ผ ํด์. - ๐ ํต์ฌ ๊ธฐ์ต๋ฒ: "๊ณต์ ๊ฐ๋ฅํ ์๊ฒฐ ์ฝํ
์ธ =
<article>, ํ์ด์ง ๋ด ์ฑํฐ ๊ตฌ๋ถ =<section>"
Q2. ์๋ ์ฝ๋์์ ์๋ชป๋ ์ ์ ๋ชจ๋ ๊ณ ๋ฅด์ธ์.
<body>
<div class="header">
<h3>์์๋ค ์ปค๋ฎค๋ํฐ</h3>
</div>
<div class="content">
<h1>๊ฒ์๊ธ 1</h1>
<h1>๊ฒ์๊ธ 2</h1>
<h1>๊ฒ์๊ธ 3</h1>
</div>
</body>โ
์ ๋ต: โ <div class="header"> โ <header> ๋ก, โก H3์ด H1๋ณด๋ค ๋จผ์ ๋ฑ์ฅ (ํค๋ฉ ๊ณ์ธต ์ญ์ ), โข H1์ด ์ฌ๋ฌ ๊ฐ (ํ์ด์ง๋น H1์ ํ๋)
๐ก ์์ธ ํด์ค:
- ์๋ฆฌ ์ค๋ช
: โ
<header>๋ ์๋งจํฑ ํ๊ทธ์ด๋ฏ๋ก<div>๋์ ์จ์ผ ํด์. โก ์ฌ์ดํธ ์ ๋ชฉ์ด H3์ธ๋ฐ ๊ฒ์๊ธ ์ ๋ชฉ์ด H1์ด๋ฉด ๊ณ์ธต์ด ์ญ์ ๋ผ์. ์ฌ์ดํธ ์ ๋ชฉ์ด H1, ๊ฒ์๊ธ ์ ๋ชฉ์ด H2~H3์ด ๋ง์ต๋๋ค. โข H1์ ๊ฒ์์์ง์๊ฒ "์ด ํ์ด์ง์ ํต์ฌ ์ฃผ์ ", ํ์ด์ง๋น ํ๋์ฌ์ผ ํด์. - ๐ ํต์ฌ ๊ธฐ์ต๋ฒ: "H1์ ํ์ด์ง๋น 1๊ฐ, ํค๋ฉ ๋ ๋ฒจ์ ๋ ผ๋ฆฌ ๊ณ์ธต ์์๋๋ก (๊ฑด๋๋ฐ๊ธฐ ๊ธ์ง)"
Q3. ์์ฒ ์ด์ ํ ์คํธ ํ์
์์(PM)๊ฐ ์๋ก์ด ์๊ตฌ์ฌํญ์ ๋ค๊ณ ์๋ค: "์ฐ๋ฆฌ ์ฌ์ดํธ ํ๋จ์ ๊ณ ๊ฐ์ผํฐ ์ฐ๋ฝ์ฒ, ์ด์ฉ์ฝ๊ด, ๊ฐ์ธ์ ๋ณด์ฒ๋ฆฌ๋ฐฉ์นจ ๋งํฌ๋ฅผ ๋ฃ์ด์ฃผ์ธ์. ๊ทธ๋ฆฌ๊ณ ๋ฉ์ธ ์ฝํ ์ธ ์ค๋ฅธ์ชฝ์ '์ด ๊ธ์ ์ฝ์ ์ฌ๋๋ค์ด ์ฝ์ ๊ธ' ๋ฐ์ค๋ ์ถ๊ฐํด์ฃผ์ธ์."
์์ฒ ์ด๋ ๋ ์์ ๋ชจ๋
<div>๋ก ์ง๋ ค ํ๋ค. ์ํธ ๋ฆฌ๋๊ฐ ์ฝ๋ ๋ฆฌ๋ทฐ์์ ์ด๋ค ํ๊ทธ๋ฅผ ๊ถ์ฅํ ๊น?
โ
์ ๋ต: ํ๋จ ์ ๋ณด โ <footer>, ์ถ์ฒ ๊ธ ๋ฐ์ค โ <aside>
๐ก ์์ธ ํด์ค:
- ์๋ฆฌ ์ค๋ช
:
<footer>๋ ์ ์๊ถ, ์ฐ๋ฝ์ฒ, ๋ฒ์ ๋งํฌ ๋ฑ "์น์ ๋๋ ํ์ด์ง์ ๋ง์ง๋ง ์ ๋ณด" ๋ฅผ ๋ด๋ ์๋งจํฑ ํ๊ทธ์ ๋๋ค.<aside>๋ ๋ฉ์ธ ์ฝํ ์ธ ์ ๊ฐ์ ์ ์ผ๋ก ์ฐ๊ด๋ "๋ณด์กฐ ์ ๋ณด" โ ๊ด๋ จ ๊ธ, ๊ด๊ณ , ์์ฑ์ ์๊ฐ ๋ฑ์ ์จ์. - ์ค๋ต ํผ๋๋ฐฑ: ์์ฒ ๋,
<div>๋ก ์ง๋ฉด ๊ตฌ๊ธ ๋ด๋, ์คํฌ๋ฆฐ๋ฆฌ๋๋, 6๊ฐ์ ํ์ ์์ฒ ๋ ๋ณธ์ธ๋ "์ด๊ฒ footer์ผ, sidebar์ผ?" ๋ผ๊ณ ๋๋ฌผ์ ๊ฑฐ์์. - ๐ ํต์ฌ ๊ธฐ์ต๋ฒ: "ํ๋จ ๋ฒ์ /์ฐ๋ฝ์ฒ ์ ๋ณด =
<footer>, ๋ณธ๋ฌธ ์ ๋ณด์กฐ ์ ๋ณด =<aside>"
๐ฃ ์์ฒ ์ด์ ํด๊ทผ ์ผ๊ธฐ
์ค๋ ์ฝ๋ ๋ฆฌ๋ทฐ์์ ์ํธ ๋ฆฌ๋ ๋์ด ๋ด PR์ ๋จ๊ธด ์ฝ๋ฉํธ๊ฐ ์์ง๋ ๋จธ๋ฆฌ์ ๋งด๋๋ค. "์ด ํ์ด์ง ์ ์ฒด๊ฐ div ํ๋๋ก๋ง ๋์ด ์์ด์. ์คํฌ๋ฆฐ๋ฆฌ๋ ์ผ๋ณด์ จ๋์?" โ ๊ทธ ํ๋ง๋์ ์ง์ง ๋ญ๊ฐ ์ป์ด๋ง์ ๊ฒ ๊ฐ์๋ค.
๐ก "
<div>๋ ์คํ์ผ์ฉ ๊ทธ๋ฆ, ์๋งจํฑ ํ๊ทธ๋ ์๋ฏธ ์๋ ๊ณ์ฝ์๋ค. ๋ธ๋ผ์ฐ์ ยท๊ตฌ๊ธยท์คํฌ๋ฆฐ๋ฆฌ๋ ๋ชจ๋ ์๋งจํฑ ํ๊ทธ๋ฅผ ์ฝ๊ณ ํ์ด์ง๋ฅผ ์ดํดํ๋ค."
ํด๊ทผํ๊ณ ์ง์์ ์คํฌ๋ฆฐ๋ฆฌ๋(VoiceOver) ์ผ๊ณ ์ฐ๋ฆฌ ์๋น์ค ์ง์ ์จ๋ดค๋๋ฐ ์ง์ง ์ถฉ๊ฒฉ์ด์๋ค. ์๋งจํฑ ํ๊ทธ๊ฐ ์์ผ๋๊น "div div div div..." ๋ผ๊ณ ์ฝ์ด์ฃผ๋๋ฐ ๋ญ๊ฐ ๋ญ์ง ํ๋๋ ๋ชจ๋ฅด๊ฒ ๋๋ผ. <article> ํ๋ ์ด๋ค๊ณ ๊ฐ๋ฐ์ด ๋ ๋ณต์กํด์ง๋ ๊ฒ๋ ์๋๋ฐ, ์ด๊ฑธ ์ ์ด์ ์ผ ์์๋ ์ถ์ด์ ์ข ๋ฐ์ฑํ๋ค. ๋ด์ผ๋ถํฐ๋ PR ์ฌ๋ฆฌ๊ธฐ ์ ์ ์๋งจํฑ ํ๊ทธ ์ฒดํฌ๋ฆฌ์คํธ ํ ๋ฒ์ฉ ๋๋ ค๋ด์ผ๊ฒ ๋ค.
๐ ๋ ์์๋ณด๊ธฐ