1. ๋์์ธ์ ์์, ๋ ์ด์์
์ง๊ธ ๋ด ๋ธ๋ก๊ทธ๋ ๋งค์ฐ ๋ชป์๊ฒผ๋ค. ์๋ ํ๋๋ ์ ์ ํ์ ธ ์๊ณ (๋งํฌ์ ์ ํ์ง ๊ธฐ๋ณธ ์์ ๋ง๊ณ ๋), CSS๋ ํ๋๋ ์์ด์ ๋งํฌ๋ค์ ์จํ ํ๋์์ผ๋ก ๋ณด์ด๊ณ ๋๋ฆฌ๊ฐ ๋ฌ๋ค.
ํ์ง๋ง ๊ฐ์ฅ ๋ฌธ์ ๋ ๋ฐฐ์น๊ฐ ์ ๋ฉ๋๋ก๋ผ๋ ๊ฒ์ด๋ค. HTML ์๋งจํฑ์ด์ผ ์ ์ง์ฌ ์(๋ค๊ณ ๋ฏฟ)์ง๋ง ๊ทธ๋ฅ ์์์ ์๋๋ก ๋ฐฐ์ด๋์์ ๋ฟ์ด๋ค. ๋ ์ด์์์ด ํ์ด์ง์์ ์ผ๋ง๋ ์ค์ํ์ง๋ฅผ ์๊ฐํด ๋ณด๋ฉด ์ด๋ ํฐ ๋ฌธ์ ๋ค.
๋ด๊ฐ ์ฐธ๊ณ ํ ๋๊ตฌ๋ ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์น์ฌ์ดํธ ๋์์ธ์ ๋น๋ฐ์์๋ ๋ ์ด์์์ ๋ชฉ์ฐจ์ ์ฒซ๋ฒ์งธ๋ก ๊ผฝ๊ณ ์๋ค.
๋ํ 10๋ ์ฐจ ๋์์ด๋๋ถ์ ์๋ฆฌ์ฆ ๋๊ตฌ๋ ๋์์ด๋๊ฐ ๋ ์ ์๋ค์์๋ ๋์์ธ์ 4๋ ํต์ฌ ์์ ์ค ๊ฐ์ฅ ๊ธฐ๋ณธ์ด๋ผ๊ณ ๋งํ๊ณ ์๋ค. ๊ฐ๋ ์ฑ์ด ์ ๋ง ์ ์ข์ ํ์ด์ง๋ฅผ ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ์ถฉ๋ถํ ์ดํดํ ์ ์๋ ์ด์ผ๊ธฐ๋ค.
๋ฐ๋ผ์ ์ด๋ฒ์๋ CSS๋ฅผ ํ์ฉํด์ ํ์ด์ง์ ๋ ์ด์์์ ํ๋ฒ ์์ ํด ๋ณด๋๋ก ํ์. ๋ฉ์ธ ํ์ด์ง๋ถํฐ ์์ํด ๋ณผ๊น.
๋ชจ๋ฐ์ผ ์ฐ์ ๋์์ธ์ ์ ์ฉํ์๋ค. ๋ด ๋ธ๋ก๊ทธ๋ฅผ ๋ชจ๋ฐ์ผ๋ก ๋ณด๋ ์ฌ๋๋ ๋ง์ ๊ฒ์ด๊ณ ๋ํ ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ๊ฐ ์ฑ๋ฅ์ด ๋ ์ข๊ธฐ ๋๋ฌธ์ ๋ชจ๋ฐ์ผ ์ฐ์ ์ผ๋ก ๋ก๋ํ๊ณ ๋์ ์ปดํจํฐ ํ๊ฒฝ์์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ ์ฉํ๋ ๊ฒ ์๋ ๋ฉด์์ ๋ ๋์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ํ css ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฑํ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ฒ์์ด๋ผ ๊ฐ์ฅ ๊ณ ์ ์ ์ธ BEM ํด๋์ค ์๋ช ๋ฒ์ ์ ๋นํ ์ฌ์ฉํ์๋ค.
2. ํ์ด์ง ํค๋์ ํธํฐ ๊ณตํตํ
ํ์ฌ ํ์ด์ง ํค๋์๋ ๋ด๋น๊ฒ์ด์ ์ด ์๊ณ , ํธํฐ์๋ ๊ฐ๋จํ ๋ด ์ด๋ฆ์ด ์๋ค. ํ์ฌ ์ด ์์๋ค์ ๋ฉ์ธ ํ์ด์ง์๋ง ๋ค์ด ์๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ ํค๋์ ํธํฐ์ ๋ค์ด ์๋ ์ ๋ณด๋ฅผ ์๊ฐํด ๋ณผ ๋ ๋ชจ๋ ํ์ด์ง์ ๊ณตํต์ผ๋ก ๋ค์ด๊ฐ ์๋ ๊ฒ ํฉ๋ฆฌ์ ์ด๋ค.
๋ฐ๋ผ์ ์ด๋ฅผ ๋ชจ๋ ํ์ด์ง์ ๊ณตํต์ผ๋ก ๋ฃ์ด์ฃผ๋๋ก ํ์. /src/pages/_app.tsx
๋ฅผ ์์ ํด์ฃผ๋ฉด ๋๋ค.
// src/pages/_app.tsx
import '@/styles/globals.css';
import type { AppProps } from 'next/app';
import Footer from '@/components/footer';
import Header from '@/components/header';
import blogCategoryList from 'blog-category';
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<Header navList={blogCategoryList} />
<Component {...pageProps} />
<Footer />
</>
);
}
๊ทธ๋ฆฌ๊ณ /src/pages/index.tsx
์ ์๋ ํค๋์ ํธํฐ๋ ์ง์์ค๋ค.
3. ์ฝํ ์ธ ์์ญ ๋๋น
ํ์ฌ ๋ธ๋ก๊ทธ ํ์ด์ง์ ์ปจํ ์ธ ๋ width๊ฐ 100%๋ผ ํ์ด์ง๋ฅผ ๊ฝ ์ฑ์ฐ๊ณ ์๋ค. ํ๋ฉด์ด ์ข์ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ผ๋ฉด ํ ์คํธ๊ฐ ๋ต๋ตํ๊ฒ ๋ฐฐ์น๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง ์๋๋ก ์ปจํ ์ธ ๋ฅผ ์ต๋ํ ๋์ ๋๋น์ ๋ฐฐ์นํด์ผ ํ๊ฒ ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ ๊ฑฐ์ ์ ๋ต์ด๋ผ ์๊ฐํ๋ค. ์ ๊ทธ๋๋ 768px ๋ฏธ๋ง์ ํ๋ฉด ๋๋น์ผ ๋๋ ์์ชฝ์ ์ฝ๊ฐ์ ํจ๋ฉ์ ์ฃผ๊ฒ ์ง๋ง ์ฝํ ์ธ ๋ฅผ ํ๋ฉด์ ๊ฑฐ์ ๊ฝ ์ฑ์ฐ๋๋ก ํ ๊ฒ์ด๋ค.
ํ์ง๋ง 1920px ๋๋น๊ฐ ๋ง์ ๋ฐ์คํฌํฑ ํ๊ฒฝ์์๋ ์ด๊ฒ ๋๋ฌด ๋์ด ๋ณด์ด๊ณ ํ ์ค์ ์๋ ๊ธ์๋ ๋๋ฌด ๋ง์์ ์ฝ๊ธฐ ํ๋ค ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ฝํ ์ธ ์ ์ต๋ ๋์ด๋ฅผ ์ ํํด์ผ ํ๋ค๊ณ ๋ณธ๋ค. max-width ์์ฑ์ ์ด์ฉํ ๊ฒ์ด๋ค.
3.1. ์ต๋ ์ฝํ ์ธ ๋๋น์ ๊ดํ ๊ณ ์ฐฐ
๊ทธ๋ฐ๋ฐ ์ด๋ ์ ๋์ ๋๋น๊น์ง ์ปจํ ์ธ ๋ฅผ ์ฑ์ฐ๋๋ก ํด์ผ ํ ๊น?
์น ์ ๊ทผ์ฑ ๊ฐ์ด๋์์๋ ํ
์คํธ ์ปจํ
์ด๋๊ฐ 80์ ๋๋น๋ฅผ ๋์ผ๋ฉด ์ ๋๋ค๊ณ ํ๋ค. max-width: 70rem
์ผ๋ก ์ค์ ํ๋ ๋ฐฉ์์ผ๋ก ํด๋ณด๋ผ๊ณ ์กฐ์ธ๋ ํด์ฃผ๊ณ ์๋ค.
๊ธฐ๋ณธ ํฐํธ ์ฌ์ด์ฆ๊ฐ 16px์ด๋ฏ๋ก ์ฝ 1120px ์ ๋์ ์ต๋ ๋๋น๋ฅผ ๊ฐ๊ฒ ํ๋ผ๊ณ ๋งํ๋ ๊ฒ์ด๋ค. ๊ทธ๋์ max-width๋ฅผ 60rem์ผ๋ก๋ ํด๋ณด๊ณ 70rem์ผ๋ก๋ ํด๋ดค๋ค. 1920px์์ ๋ด๋ ์ฌ๋ฐฑ์ด ์๊ฐ๋งํผ ์์ฒญ ๋์ด ๋ณด์ด์ง ์๊ณ ๊ด์ฐฎ์ ๋ณด์๋ค.
๊ทธ ์ ๋๋ก ์ค์ ํ์ ์ฌ๋ฐฑ์ ์ถฉ๋ถํด ๋ณด์์ผ๋ ํด๋น ๋๋น์ ํ ์คํธ๋ฟ์ผ ๋ ํ ์ค๋น ํ ์คํธ๊ฐ ๋๋ฌด ๋ง์ ๋ณด์๋ค. ๊ทธ๋ผ ํ ์ค์ ์ผ๋งํผ์ ๊ธ์ ์๊ฐ ์ ์ ํ ๊น?
ํ์ดํฌ๊ทธ๋ํผ ์ฐ๊ตฌ์ ์ํ๋ฉด ์ฌ๋๋ค์ ์จ๋ผ์ธ ์ปจํ ์ธ ๋ฅผ ์ฝ์ ๋ ๋ ์งง์ ์ค ๊ธธ์ด๋ฅผ ์ฐ๋ ๊ฒ์ด ๋ ์กฐ์งํ๋๊ณ ์ดํดํ๊ธฐ ์ฝ๋ค๊ณ ๋๋ผ๊ธฐ ๋๋ฌธ์ ์งง์ ์ค์ ๋ ์ ํธํ๋ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ 40~55์ ์ ๋์ ์ค ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์ด์์ ์ด๋ผ๊ณ ํ๋ค.
๊ทธ๋ผ ์ฐ๋ฆฌ๊ฐ ์ถ๊ตฌํด์ผ ํ ๊ฑด ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฝํ ์ธ ์ปจํ ์ด๋์ ๋๋น๋ 60~70rem์ผ๋ก
- ํ
์คํธ๋ ํ ์ค๋น 40
55์(์ฆ 4055rem)์ด ๋๋๋ก ์ค์
์ฐ๋ฆฌ๊ฐ ์ง๊ธ ์๊ฐํด์ผ ํ ๊ฑด ๋ฉ์ธ ํ์ด์ง, ๊ธ ๋ชฉ๋ก ํ์ด์ง, ๊ธ ์์ธ๋ณด๊ธฐ ํ์ด์ง์ด๋ค. ์ด๋ ๋ฉ์ธ ํ์ด์ง์ ๊ธ ๋ชฉ๋ก ํ์ด์ง๋ ์ต๋ ๋๋น๊ฐ 6070rem์ด ๋๋๋ก ์ค์ ํ ์ ์๋ค. ํ
์คํธ๋ ํ ์ค์ 4055์๋ง ๋ค์ด๊ฐ๋๋ก ์ค์ ํ๋๋ก ํ ์ ์๋ ์ฅ์น๋ค์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฉ์ธ ํ์ด์ง ๊ฐ์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๋ ์ด์์์ ์๊ฐํ ์ ์๊ฒ ๋ค.
์๊ฐ ์์ญ์ ๋ด ํ๋กํ ์ฌ์ง์ ์ฌ๋ฆฌ๋ ๊ฑธ๋ก ํ ์คํธ ์์ญ์ ๋๋น๋ฅผ 40~55์๋ก ๋ง๋ค ์ ์์ ๊ฒ์ด๊ณ ๊ธ ํ๋ฆฌ๋ทฐ์ ์๋ ํ ์คํธ๋ ๋น์ฐํ ํ์ฐธ ์ ์ ์ค๋น ๊ธ์์๋ฅผ ๊ฐ์ง ๊ฒ์ด๋ค.
๋ํ ๊ธ ๋ชฉ๋ก ํ์ด์ง๋ ๋ค์๊ณผ ๊ฐ์ด, ๊ธ ํ๋ฆฌ๋ทฐ ์นด๋(?)์ ๊ธ์ ์ธ๋ค์ผ์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์นด๋์ ๋ค์ด๊ฐ๋ ํ ์คํธ๋ฅผ ํ์ ํ ์ ์๊ฒ ๋ค. ํ ์ค ๊ธฐ์ ๋ธ๋ก๊ทธ์ ๋ ์ด์์์ ์ฐธ๊ณ ํ์๋ค.
ํ์ง๋ง ๊ธ ์์ธ๋ณด๊ธฐ ํ์ด์ง์ ๊ฒฝ์ฐ ๋ฑํ ๊ธ ์ฝํ ์ธ ์์ญ ๋๋น๋ฅผ ์ค์ฌ์ค ์ด๋ค ์ฅ์น๊ฐ ์๊ธฐ ๋๋ฌธ์(๋ฌผ๋ก TOC๋ฅผ ์์ชฝ์ ๋ฃ๊ฑฐ๋ ํ๋ ๋ฐฉ์๋ ๊ฐ๋ฅํ๊ฒ ์ง๋ง ๊ทธ๊ฑด ๋์ค์ ์๊ฐํด๋ณด์) ๊ทธ๋ฅ ์ ์ฒด ์์ญ์ 50rem์ผ๋ก ํ๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ค.
3.2. ์ฝํ ์ธ ์์ญ ์ปจํ ์ด๋ ์ค์
์ผ๋จ ๋ฉ์ธ ํ์ด์ง์ ๋ค์ด๊ฐ ๋ํผ ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ด /src/pages/styles.module.css
์ ๋ง๋ค๋ฉด ๋๋ค. max-width
๋ง ์ ์ธํ๊ณ ๋๋จธ์ง ๋ํผ๋ค๋ ์ด๋ฅผ ๋ฐ๋ฅด๋ฉด ๋๋ค.
// /src/pages/styles.module.css
.pagewrapper{
margin:0 auto;
width:100%;
min-height:100vh;
}
@media (min-width: 768px) {
.pagewrapper{
max-width:60rem;
}
}
๊ทธ๋ฆฌ๊ณ /src/pages/index.tsx
์ main ํ๊ทธ className์ผ๋ก styles.pagewrapper
๋ฅผ ์ถ๊ฐํ๋ค.(import style์ ๋น์ฐํ ์ ํ๋์ด์ผ ํ๋ค)
/src/pages/posts/[category]/styles.module.css
์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ๋ํผ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ค๋ค.
.pagewrapper{
margin:0 auto;
width:100%;
min-height:100vh;
}
@media (min-width: 768px) {
.pagewrapper{
max-width:60rem;
}
}
/src/pages/[category]/index.tsx
์ ํ์ด์ง ์ปดํฌ๋ํธ์ main ํ๊ทธ์๋ ํด๋น ๋ํผ๋ฅผ ์ถ๊ฐ.
function PostListPage({
category, postList,
}: InferGetStaticPropsType<typeof getStaticProps>) {
return (
// ํ์ด์ง ๋ํผ ์ถ๊ฐ
<main className={styles.pagewrapper}>
<h1>{category}</h1>
<ul>
{postList.map((post: PostMetaData) =>
<li key={post.url}>
<Card {...post} />
</li>
)}
</ul>
</main>
);
}
๊ทธ๋ฆฌ๊ณ ๊ธ ์์ธ ํ์ด์ง์ ์ปจํ
์ด๋๋ฅผ ์ํ ํด๋์ค๋ /src/pages/posts/[category]/styles.module.css
์ ์ถ๊ฐ์ ์ผ๋ก ์ ์
.pagewrapper{
margin:0 auto;
width:100%;
min-height:100vh;
}
.articlewrapper{
margin:0 auto;
width:100%;
min-height:100vh;
}
@media (min-width: 768px) {
.pagewrapper{
max-width:60rem;
}
.articlewrapper{
max-width:50rem;
}
}
๊ทธ๋ฆฌ๊ณ /src/pages/posts/[category]/[slug].tsx
์ ํ์ด์ง ์ปดํฌ๋ํธ์ main ํ๊ทธ์๋ ํด๋น ๋ํผ๋ฅผ ์ถ๊ฐ.
function PostPage({
post
}: InferGetStaticPropsType<typeof getStaticProps>) {
return (
// ์ฌ๊ธฐ์ ์ถ๊ฐ
<main className={styles.articlewrapper}>
<article>
<h1>{post.title}</h1>
<time>{post.date}</time>
<ul>
{post.tags.map((tag: string)=><li key={tag}>{tag}</li>)}
</ul>
{'code' in post.body?
<MDXComponent code={post.body.code}/>:
<div dangerouslySetInnerHTML={{ __html: post.body.html }} />
}
</article>
</main>
);
}
์ด๋ ๊ฒ ์ค์ ํ ํ ์ฌ๋ฌ ๊ธฐ์ ์ ๊ธฐ์ ๋ธ๋ก๊ทธ๋ค์ ํ์ด์ง ์ปจํ ์ด๋ ๋๋น๋ฅผ ์กฐ์ฌํ์๋ค. ๋๋ถ๋ถ์ด ๋ด๊ฐ ์ด ๊ฒ๊ณผ ๊ฐ์ด max-width๋ฅผ ์ ํํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
ํ ์ค๋ 980px(๋จ width 92%์ธ ๋ด๋ถ ์ปจํ ์ด๋๊ฐ ํ๋ ๋ ์์ด์ ์ค์ ์ฝํ ์ธ ๋๋น๋ ๋ ์์๋ค), ๋ฐฐ๋ฏผ์ 900px, ๊ตฌ๊ธ 978px, ํ ์คํธUI 1060px, ๋ผ์ธ 790px๋ฑ ๋์ถฉ ๋์ ๋น์ทํ ์์ค์ด์๋ค. ๋ด๊ฐ ์ค์ ํ 60rem(960px)๊ฐ ์ ๋ต์ ์๋์ง์ธ์ ๊ทธ๋ ๊ฒ๊น์ง ํ๋ ค๋จน์ ์์น๋ ์๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์ด์ ํ์ด์ง์ ๋ช๋ช ์ปดํฌ๋ํธ ๋ ์ด์์์ ์์ ํด ๋ณด์. ๋ฉ์ธ ํ์ด์ง์ ๊ธ ๋ชฉ๋ก ํ์ด์ง ๋ฑ..
์ฐธ๊ณ ๋ก, ์์์ ๊ฐ๊ฐ์ด ์ฌ์ฉํ min-height:100vh
๋ฑ์ ์์ฑ์ ์์ ์๋ wrapper div๋ฅผ ๋ฃ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฃ์ด ์ฃผ๋ ์์ฑ์ด๋ค. ํ์ง๋ง ์ด๋ ์ค๋๋ ๋ฒ์ ์ IE์์๋ ๋ช๋ช ํ๊ทธ์ ๋ํด ์ ์ฉ๋์ง ์๋ CSS๊ฐ ์์๊ธฐ ๋๋ฌธ์ ํ๋ ๊ดํ์ด๋ฉฐ ์ง๊ธ ์์ ์ ๊ผญ ๋ฐ๋ฅผ ํ์๋ ์๋ค.
4. ๋ฉ์ธ ํ์ด์ง ๊ฐ๋ต ๋ ์ด์์
ํ์ฌ ๋ฉ์ธ ํ์ด์ง๋ ์๋ฏธ์ ์ผ๋ก 4๊ฐ์ ์์ญ์ผ๋ก ๋๋ ์ ธ ์๋ค๊ณ ํ ์ ์๋ค. ๋ค์๊ณผ ๊ฐ์ด ํค๋, ๋ด ์๊ฐ, ๊ธ ๋ชฉ๋ก, ํธํฐ๊ฐ ๊ทธ 4๊ฐ์ ์์ญ์ด๋ค.
์ฌ๊ธฐ์ ํค๋์ ํธํฐ๋ ์ง๊ธ ๋น์ฅ ๋ ์ด์์์ด ๋ฌธ์ ๊ฐ ๋์ง๋ ์์ผ๋ฏ๋ก ๋ด ์๊ฐ์ ๊ธ ๋ชฉ๋ก์ ๋ํด์๋ง ์๊ฐํด ๋ณด์.
4.1. ๋ฉ์ธ ํ์ด์ง ๋ด ์๊ฐ ์์ญ
๋ฉ์ธ ํ์ด์ง๋ ์ฌ์ฉ์๊ฐ ๋ด ๋ธ๋ก๊ทธ์ ์ ์ํ์ ๋ ์ฒ์์ผ๋ก ๋ณด๊ฒ ๋๋ ํ์ด์ง๋ค. ๋ฐ๋ผ์ ๋ด ์๊ฐ๊ฐ ์ต์๋จ์ ์์ด์ผ ํ๋ ๊ฑด ๋ง์ง๋ง, ๋ด ๋ธ๋ก๊ทธ ์ปจํ ์ธ ๋ ์ ์ ํ ๋ ธ์ถ๋๋๋ก ํ๋ฉด ์ข๊ฒ ๋ค. ์ด๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ฏ๋ก ๊ณต๊ฐ์ ์ต๋ํ ๋ ์ฐจ์งํ๋ฉด์ ์ ์ ํด ๋ณด์ด๋ ๋ ์ด์์์ด ๋๋๋ก ํ๊ณ ์ ํ๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ ๋ฐ์ํ ๋ ์ด์์์ ์๊ฐํด ๋ณด์๋ค.
์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ ๊น? ๋จผ์ ์ด๋ฆ, ์๊ฐ๊ธ, ๋งํฌ๋ค์ ๋ฐฐ์ด์ ์ด์ฐจํผ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ ์๋๋ก ๋ฐฐ์ด๋์ด ์์ผ๋ฏ๋ก ๊ตณ์ด ์์ ํ ํ์๊ฐ ์๋ค. ํ์ง๋ง ์ด๋ฏธ์ง์ ๋ ์ด์์์ด ์์ด์ง ์๋๋ก ์ด ๋ถ๋ถ์ div๋ก ํ๋ฒ ๋ฌถ์ด์ฃผ์. ๊ทธ๋ฆฌ๊ณ CSS ๋ชจ๋ ํ์ผ์ src/components/profile
์ ๋ง๋ค์ด ์ฃผ์. styles.module.css
์ ๋์ ์ด๋ฆ์ด๋ฉด ๋๊ฒ ๋ค.
์ด๋ฏธ์ง๋ ํ๋ฉด ๋๋น๊ฐ ํด ๋, ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ฐ์ผ๊ณผ ๋ฐ์คํฌํ์ ๊ฐ๋ฅด๋ ๊ธฐ์ค์ด ๋๋ 768px๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ณด๋ค ํฌ๋ฉด ๋ณด์ฌ์ฃผ๋๋ก ํ๋ค. ์ด๋ฏธ์ง๊ฐ ๋์จ ํ ์ธ๋ก๋ก ๋ฐฐ์ด๋ ๋๋จธ์ง ์์๋ค์ด ์์ผ ํ๋ฏ๋ก ๋ด ์๊ฐ ๋ฐ์ค์ display๋ฅผ flex๋ก ์ค์ ํ๊ณ ๊ฐ๋ก๋ก ๋ฐฐ์ด๋๋๋ก ํ๋ค. ์ด ์ค์ ์ ํ๋ฉด ๋๋น๊ฐ 768px๋ณด๋ค ํด ๋๋ง ํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋งํฌ๋ค์ ๊ฐ๋ก๋ก ๋ฐฐ์ด๋์์ผ๋ฉด ํ๋ค. ๋ฐ๋ผ์ ๋งํฌ๋ค์ ๊ฐ์ธ๋ ul ์ปดํฌ๋ํธ์ ์ ์ฉํด ์ค flex๋ ์ค์ ํด ์ฃผ์. ์ฌ๊ธฐ์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๊ฐ ํ์์๋ค. ๊ทธ๋ฆฌ๊ณ ๋งํฌ์๋ bullet point๊ฐ ํ์์์ผ๋ฏ๋ก ์ด๋ฅผ ์์ ์ฃผ๊ณ ๋งํฌ ๊ฐ์ ์ด๋ ์ ๋์ ๊ฐ๊ฒฉ์ ์ค๋ค.
์ด๋ฅผ CSS ํด๋์ค๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
// src/components/profile/profile.module.css
.profile__image{
display:none;
}
.profile__linklist{
display:flex;
flex-direction:row;
list-style:none;
padding-left:0;
gap:0 15px;
}
@media (min-width:768px){
.profile__image{
display:block;
}
.profile{
display:flex;
flex-direction:row;
}
}
๊ทธ๋ฆฌ๊ณ ํ๋กํ ์ปดํฌ๋ํธ์์ ๋ค์๊ณผ ๊ฐ์ด ํด๋์ค๋ฅผ ์ฌ์ฉํด ์ค๋ค.
// src/components/profile/index.tsx
import styles from './profile.module.css';
function Profile() {
return (
<article className={styles.profile}>
<Image className={styles.profile__image} src={blogConfig.picture} alt={`${blogConfig.name}์ ํ๋กํ ์ฌ์ง`} width={80} height={80} />
<div>
<h2>{blogConfig.name}</h2>
<p>{blogConfig.description}</p>
<ul className={styles.profile__linklist}>
<li>
<Link href={blogConfig.social.github} target='_blank'>
Github
</Link>
</li>
<li>
<Link href={blogConfig.social.BOJ} target='_blank'>
BOJ
</Link>
</li>
</ul>
</div>
</article>
);
}
์ด๋ ๊ฒ ํ๊ณ ์ ์ฉํด ๋ณด๋ฉด ๋ด ์๊ฐ ์ปดํฌ๋ํธ์ ์ฌ์ง์ด ์๊ฐ๊ธ ์ผ์ชฝ์ ๋ณด์ด๊ณ , ํ๋ฉด ๋๋น๊ฐ ์์์ง๋ฉด ์์ด์ง๋ ๊ฑธ ํ์ธํ ์ ์๋ค. ๋ ๋งํฌ๋ ๊ฐ๋ก๋ก ์ ๋ฐฐ์ด๋์ด ์๋ค.
4.2. ๋ฉ์ธ ํ์ด์ง ๊ธ ๋ชฉ๋ก ์์ญ
๋ฉ์ธ ํ์ด์ง์์ ๊ธ ๋ชฉ๋ก์ ๋ฐฐ์น์ ๋ํด ์๊ฐ๋๋ ์๊ตฌ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ชจ๋ฐ์ผ์์ ํ ์คํธ๊ฐ ๋ต๋ตํ๊ฒ ๋ณด์ด์ง ์์์ผ ํ๋ค. PC ํ๊ฒฝ์์๋ ๋ง์ฐฌ๊ฐ์ง.
- ์ฒ์ ํ์ด์ง๊ฐ ๋ด์ ๋ ๋ฉ์ธ ํ์ด์ง์์ ์ต๋ํ ๋ง์ ๊ธ์ ๋ณด์ฌ์ค ์ ์์ด์ผ ํ๋ค.
์ฌ๊ธฐ์ ๋ถํฉํ๊ธฐ ์ํด์๋, 1๋ฒ ์๊ตฌ์ฌํญ์ ๋ ์ฐ์ ์ ์ผ๋ก ์๊ฐํ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์์ ๋ฐฐ์น๋ฅผ ์๊ฐํด ๋ณด์๋ค. ๋ชจ๋ฐ์ผ์์ ๋ต๋ตํด ๋ณด์ด์ง ์๊ธฐ ์ํด์๋ ๊ธ ํ๋ฆฌ๋ทฐ ์นด๋ ํ๋๊ฐ ๋๋น๋ฅผ ์ ๋ถ ์ฐจ์งํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
์ด๋ฒ์๋ src/components/category/styles.module.css
์์ฑ. ๊ทธ๋ฅ ํ๋ฉด์ด ์ผ์ ๋๋น ์ด์์ด ๋๋ฉด ๊ฐ๋ก๋ก ๋ฐฐ์ด๋๋๋ก ํ๊ธฐ๋ง ํ๋ฉด ๋๋ค. ๊ทธ ์ธ์ bullet point๋ฅผ ์์ ์ฃผ๊ณ ๊ฐ๋ก ๋ฐฐ์ด์ ๊ฐ๊ฒฉ์ ์ฃผ๋ ์ ๋๋ง ํด์ฃผ์.
.category__cardlist{
list-style:none;
}
@media (min-width:768px){
.category__cardlist{
display: flex;
flex-direction:row;
gap:20px;
}
}
๊ทธ๋ฆฌ๊ณ src/components/category/index.tsx
์ ulํ๊ทธ์ styles.category__cardlist
๋ฅผ ์ ์ฉํด ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
์ฌ๊ธฐ๊น์ง ํ๋ฉด ๋ฐฐ์น๊ฐ ์ด๋ ๊ฒ ๋ฐ๋๋ค. ์์ง๋ ์์ฒญ๋๊ฒ ๋ชป์๊ฒผ์ง๋ง ์๊น๋ณด๋ค ํจ์ฌ ๋์ ๋ณด์ด๋ ๊ฒ ๊ฐ๋ค.
์ฐธ๊ณ
https://brunch.co.kr/@sarayun/22