CSS์ mediaQuery๋ฅผ ์ฌ์ฉํ์ฌ ๋ทฐํฌํธ(viewport) ๋๋น์ ๋ฐ๋ผ CSS ์์ฑ ๊ฐ์ ๋ณ๊ฒฝํด๋ณด์โ
๐ mediaQuery๋ ๋ฌด์์ธ๊ฐ์?
๋ฏธ๋์ด ์ฟผ๋ฆฌ(mediaQuery)๋ ๋จ๋ง๊ธฐ์ ์ ํ (์ถ๋ ฅ๋ฌผ vs. ํ๋ฉด)๊ณผ, ์ด๋ค ํน์ฑ์ด๋ ์์น (ํ๋ฉด ํด์๋, ๋ทฐํฌํธ ๋๋น ๋ฑ)์ ๋ฐ๋ผ ์น ์ฌ์ดํธ๋ ์ฑ์ ์คํ์ผ์ ์์ ํ ๋ ์ ์ฉํฉ๋๋ค. if ์กฐ๊ฑด๋ฌธ๊ณผ ๋น์ทํ ๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
ex) ๋ทฐํฌํธ ๋๋น๊ฐ 62rem ์ดํ์ด๋ฉด flex-direction์ row์์ column์ผ๋ก ๋ฐ๊ฟ์ค~
@media ํค์๋๋ก ์์ํ๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ์ ๋ฌธ๋ฒ ๊ตฌ์กฐ
@media (์กฐ๊ฑด) {
์คํ์ผ
}
์คํ์ผ ๋ถ๋ถ์๋ ์ผ๋ฐ์ ์ธ CSS ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋๋ฐ, ์กฐ๊ฑด ๋ถ๋ถ์ด ๋ง์กฑ๋ ๋๋ ์คํ์ผ์ด ์ ์ฉ๋๊ณ , ๋ง์กฑ๋์ง ์์ ๋๋ ์คํ์ผ์ด ๋ฌด์๋ฉ๋๋ค.
๋ทฐํฌํธ ๋๋น๊ฐ 62rem(992px)์ ์ด๊ณผํ ํ๋ฉด
๋ทฐํฌํธ ๋๋น๊ฐ 62rem ์ดํ์ธ ํ๋ฉด
Header.jsx
<header className={styles.header}>
<div className={styles.logo}>
<span className={styles.icon}>B</span>
<h1 className={styles.title}>๋ฐ๋ก</h1>
</div>
<ul className={styles.menu}>
<li>
<button className={styles.button}>ํ๋ก์ ํธ</button>
</li>
<li>
<button className={styles.button}>๋ผ์ด์ง</button>
</li>
<li>
<button className={styles.button}>๋ญํน</button>
</li>
<li>
<button className={styles.button}>SIGN IN</button>
</li>
</ul>
</header>
Header.module.css(postCSS)
// ๋ทฐํฌํธ ๋๋น๊ฐ 62rem์ ์ด๊ณผํ ๊ฒฝ์ฐ
.header {
display: flex;
justify-content: space-between;
}
.logo {
display: flex;
align-items: center;
}
.icon {
display: block;
text-align: center;
font-size: 1.5rem;
width: 2.5rem;
height: 2.5rem;
line-height: 2.5rem;
background-color: makerOrange;
color: white;
border-radius: 50%;
}
.title {
margin: 0;
padding: 0 0.2em;
}
.menu {
display: flex;
align-items: center;
}
.menu li {
list-style: none;
padding: 0 0.5em;
}
.button {
cursor: pointer;
outline: none;
background-color: transparent;
font-size: 1.1rem;
border: 0;
padding: 0.5em 1em;
border-radius: 5%;
}
.button:hover {
color: makerOrange;
}
// ๋ทฐํฌํธ ๋๋น๊ฐ 62rem ์ดํ์ธ ๊ฒฝ์ฐ
@media screen and (max-width: 62rem) {
.header {
flex-direction: column;
}
.menu {
flex-direction: column;
align-items: center;
margin: 0;
padding: 0;
}
.menu li {
text-align: center;
padding: 0.5em 0;
}
.button {
width: 20rem;
}
.button:hover {
color: white;
background-color: makerOrange;
opacity: 0.8;
}
}
@media screen and (max-width: 62rem) { ์คํ์ผ }
screen์ ๋ฏธ๋์ด ์ ํ ์ค ํ๋๋ก ํ๋ฉด์ด ๋์์ผ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค. ํ๋ฉด์ ์ต๋ ๋๋น๋ฅผ ์กฐ๊ฑด์ผ๋ก ํ์ฌ 62rem ์ดํ์ ํ๋ฉด์ธ ๊ฒฝ์ฐ flex-direction: row (default)์์ flex-direction: column์ผ๋ก ์คํ์ผ์ด ์ ์ฉ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ง๋ฌด๋ฆฌ...๐
ํ๋ณ์๋ฆฌ ํ๋ก ํธ ์์ง๋์ด์ง๋ง ์ฌ์ฉ์์ ํธ์์ฑ์ ๊ณ ๋ คํ์ฌ ๋ฐ์ํ ์น์ ๋ง๋ค์ด๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ๋ง์ ์ํ์ฐฉ์ค๋ฅผ ๊ฒช๊ณ ์์ง๋ง ์ง๊ธ์ฒ๋ผ ์ฐพ์๋ณด๋ฉด์ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ๋ค๋ณด๋ฉด ์ด์ ๋ณด๋ค ๋ ๋์ ๊ฐ๋ฐ์๊ฐ ๋์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋จธ๋ฆฟ์์ผ๋ก๋ ์ดํดํ๊ณ ์์ง๋ง ์ดํดํ ๋ด์ฉ์ ๊ธฐ๋กํ๋ค๋ ๊ฒ์ ์ฌ์ ํ ์ฝ์ง ์์ต๋๋ค. ๋๋จํ ์ค๋ ฅ๋ ์๋๊ธฐ์ ์ฝ๋๊ฐ ์ข์ง ๋ชปํ ์ ์๊ณ , ์ดํด๋ฅผ ์๋ชปํ์ ์๋ ์์ง๋ง ๋ถ์กฑํ ์ ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋คโโ
์ฐธ๊ณ ์ฌ์ดํธ
'Frontend > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] CSS Units(px, em, rem, vw, vh, %)์ ๋ํด ์์๋ณด์โ๏ธ (0) | 2022.08.09 |
---|---|
[CSS] Bootstrap ํญ ์ฌ์ฉ๋ฒ (0) | 2022.04.04 |