ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
๋ฏธ๋์ด์ฟผ๋ฆฌ Media Query ์ ์ฉํ๊ธฐ (์ฌ์ด์ฆ ๋ถ๊ธฐ์ ๊ธฐ์ค px, ์ฌ์ฉ๋ฐฉ๋ฒ)
์น์ ๊ธฐ์ค์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ํ ํด๋น ํ์ด์ง๋ฅผ ๋ชจ๋ฐ์ผ์์ ๋ณด๋ฉด CSS๊ฐ ์ด์ํด์ง๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ฏธ๋์ด ์ฟผ๋ฆฌ(Media Queries)๋ ๋ค์ํ ๋์คํ๋ ์ด ์ฅ์น์ ๋ทฐํฌํธ(Viewport) ํฌ๊ธฐ์ ํด์๋์ ๋ฐ๋ผ ์น ํ์ด์ง์ ์คํ์ผ์ ๋์ ์ผ๋ก ์ ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
์ด๋ฅผ ํตํด ๋ฐ์ํ ์น ๋์์ธ(Responsive Web Design)์ด ๊ฐ๋ฅํด์ง๋ฉฐ, ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ํ๋ฉด์ ์ฌ์ด์ฆ๊ฐ ์์์ง๋ฉด ์๋ ์๋ ์นดํ ๊ณ ๋ฆฌ ๋ชจ์์ ๋ฐ๊พธ๊ฑฐ๋ ๊ธ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฑ CSS๋ฅผ ๋ฐ๋ก ์ค์ ํ๋ ๊ฒ์ ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ผ๊ณ ํฉ๋๋ค.
๋ฏธ๋์ด์ฟผ๋ฆฌ ๋ถ๊ธฐ์
1. ๋ ธํธ๋ถ & ํ๋ธ๋ฆฟ ๊ฐ๋ก (ํด์๋ 1024px ~ 1279px)
2. ํ๋ธ๋ฆฟ ๊ฐ๋ก (ํด์๋ 768px ~ 1023px)
3. ๋ชจ๋ฐ์ผ ๊ฐ๋ก & ํ๋ธ๋ฆฟ ์ธ๋ก (ํด์๋ 480px ~ 767px)
4. ๋ชจ๋ฐ์ผ ์ธ๋ก (ํด์๋ ~ 479px)
4๊ฐ์ง์ px ๊ธฐ์ค์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ฐ๋ฐ ๊ณํ์ ๋ฐ๋ผ ๋ถ๊ธฐ์ ์ ๋ค๋ฅด๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
์ ๋ pc๋ฅผ ์ค์ฌ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์๊ณ , ๋ชจ๋ฐ์ผ์ ๋ํ ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ ์ฉํ์ต๋๋ค.
/* ๋
ธํธ๋ถ & ํ๋ธ๋ฆฟ ๊ฐ๋ก (ํด์๋ 1024px ~ 1279px)*/
@media all and (min-width:1024px) and (max-width:1279px) {
//์คํ์ผ ์ค์
}
/* ํ๋ธ๋ฆฟ ๊ฐ๋ก (ํด์๋ 768px ~ 1023px)*/
@media all and (min-width:768px) and (max-width:1023px) {
//์คํ์ผ ์ค์
}
/* ๋ชจ๋ฐ์ผ ๊ฐ๋ก & ํ๋ธ๋ฆฟ ์ธ๋ก (ํด์๋ 480px ~ 767px)*/
@media all and (min-width:480px) and (max-width:767px) {
//์คํ์ผ ์ค์
}
/* ๋ชจ๋ฐ์ผ ์ธ๋ก (ํด์๋ ~ 479px)*/
@media all and (max-width:479px) {
//์คํ์ผ ์ค์
}
์ ์ฉํ ๋ฏธ๋์ด์ฟผ๋ฆฌ ํ ์คํธ ๋ฐฉ๋ฒ
1. ๊ฐ๋ฐ์๋๊ตฌ (f12)๋ก ๋ค์ด๊ฐ๋๋ค.
2. ์ผ์ชฝ ์ ์๋จ์ ๋ชจ๋ฐ์ผ ํ๋ฉด ์ ํ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. (์๋ ์ด๋ฏธ์ง์์๋ Elements ์ ๋ฒํผ)
3. ์๋จ px ์ฌ์ด์ฆ๋ฅผ ์ํ๋ ๋๋ก ์กฐ์ ํฉ๋๋ค. (์ซ์ ์ ๋ ฅ ์นธ ์๋์ ์์๋ฅผ ๋๋ฌ๋ ์ฌ์ด์ฆ๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.)
๊ฐ๋ฐ์ด ๋๋ ํ์๋ ์ค๋งํธํฐ์ผ๋ก ์ ์ํ์ฌ ํ ์คํธ๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
์ ์ฉ ์์
๋ฏธ๋์ด์ฟผ๋ฆฌ ์ ์ฉ ์
๋ฏธ๋์ด์ฟผ๋ฆฌ ์ ์ฉ ํ
๋ฏธ๋์ด์ฟผ๋ฆฌ ์ฌ์ฉ ์ ํ์ธํด์ผ ํ ์ฌํญ
rem? px?
๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ์ ์ฉํ๊ธฐ ์ํด์๋ ์ฒ์ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ถํฐ ๋จ์๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๋์ ์ธ ๋จ์์ธ px๊ฐ ์๋ ์๋์ ์ธ ๋จ์์ธ rem, em, vw, vh๋ฑ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ํ ์น์ ๋ง๋ค๊ธฐ๊ฐ ํจ์ฌ ํธ๋ฆฌํ๊ณ ์ฌ์์ง๋๋ค.
class ์ค์
์ฒ์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ๊ณ ๋ คํ ํ class์ค์ ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ ๋ ์๋์ ๊ฐ์ input box๋ฅผ ๋ง๋ค์์ต๋๋ค.
(๋ง๋๋ ๋ฐฉ๋ฒ์ ์ด์ ๊ฒ์๊ธ ์ฐธ๊ณ ๋ฐ๋๋๋ค.)
๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ ์ฉํ๊ธฐ ์ ์๋ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค.
powerprice.html
<body>
<div id="powerprice-container">
<div id="input-container">
<input type="number" id="powerprice-yearInput" min="0" placeholder="1955๋
~2070๋
์ฌ์ด์ ์ฐ๋๋ง ์
๋ ฅํ์ค ์ ์์ต๋๋ค." />
<select class="year-dropdown" id="year-dropdown" onchange="updateYearInput()">
<script>
for (let i = 1955; i <= 2070; i++) {
document.write('<option value="' + i + '">' + i + '</option>');
}
</script>
</select>
<button onclick="getPowerPrice()">ํ์ธ</button>
</div>
<p id="powerprice-result"></p> <!-- ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ํฉ๋๋ค. -->
</div>
</body>
๊ทธ๋ฌ๋, ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ค๊ณ ํ๋ ๋ชจ๋ ์์๊ฐ powerprice-container ์์ ๋ค์ด๊ฐ ์์ด ๋ถํธํ์ต๋๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํ์์ต๋๋ค.
<div id="powerprice-container">
<div id="input-container">
<input type="number" id="powerprice-yearInput" min="0" placeholder="1955๋
~2070๋
์ฌ์ด์ ์ฐ๋๋ง ์
๋ ฅํ์ค ์ ์์ต๋๋ค." />
<select class="year-dropdown" id="year-dropdown" onchange="updateYearInput()">
<script>
for (let i = 1955; i <= 2070; i++) {
document.write('<option value="' + i + '">' + i + '</option>');
}
</script>
</select>
</div>
<button onclick="getPowerPrice()">ํ์ธ</button>
</div>
<p id="powerprice-result"></p> <!-- ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ํฉ๋๋ค. -->
button๊ณผ powerprice-result์ ์์น๋ฅผ ์ฎ๊ฒจ์ ์๋์ ๊ฐ์ ํํ๋ก ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ ์ฉํ ์ ์์์ต๋๋ค.
์ด์ฒ๋ผ ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ํตํด ์ฌ์ฉ์์๊ฒ ๋ชจ๋ฐ์ผ ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ ค๋ ๊ณํ์ ๊ฐ๊ณ ์๋ค๋ฉด ์ฝ๋๋ฅผ ์ฒ์ ์์ฑํ ๋๋ถํฐ ํด๋น ์ฌํญ์ ๊ณ ๋ คํ์ฌ class์ div๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ชจ๋ฐ์ผ ์ฐ์ ์ ๊ทผ (Mobile First)
์์ ํ๋ฉด์ ๋ํ ์คํ์ผ์ ๋จผ์ ์์ฑํ๊ณ , ์ ์ฐจ์ ์ผ๋ก ํฐ ํ๋ฉด์ ๋ํ ์คํ์ผ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ ๋๋ค.
์ด ์ ๊ทผ๋ฒ์ ๋๋ถ๋ถ์ ์น ํธ๋ํฝ์ด ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ๋ฐ์ํ๋ค๋ ํ๋ ์น์ ์ถ์ธ๋ฅผ ๋ฐ์ํฉ๋๋ค.
์ ๋ 375px๋ 425px ๊ธฐ์ค์ผ๋ก ์ฐ์ ์ ์ฉํ์ต๋๋ค.
๊ตฌํ ํ๋ฉด์ ๋ ์์ธํ ํ์ธํ๊ณ ์ถ๋ค๋ฉด ์๋ ์ฌ์ดํธ ์ฐธ๊ณ ๋ฐ๋๋๋ค.
https://ityrannosaurus.github.io/power/