.png)

๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ก ์์์ ์ ํ๊ณ , canvas ์์ ๋๋๊ทธ๋ฅผ ํตํ์ฌ ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์ ์๊ณ , fill์ ํตํด ์ํ๋ ์์์ผ๋ก ์ฑ์๋ฃ๊ณ , ๊ทธ๋ฆฐ ๊ทธ๋ฆผ์ ํ์ผ๋ก ์ ์ฅํ ์ ์๋ ํ์ด์ง๋ฅผ vanilla JS๋ฅผ ํตํด ๊ตฌํํ ์ ์๋๋ก ํ๊ฒ ๋ค.
html ํ์ผ์ ์ธํ
์ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑ๋์ด์๋ค. <canvas id="jsCanvas" class="canvas">๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์ ์๋ canvas๋ฅผ ๊ตฌํํ๊ณ , id์ธ "jsCanvas"๋ฅผ ํตํด Javascript๋ก ํด๋น element์ ์ ๊ทผํ๊ณ , class์ธ "canvas"๋ฅผ ํตํด css๋ฅผ ์ ์ดํ์๋ค. ์ดํ์๋ ์ ํ์ ํ๋๋ก ํ๋ <div class="controls"> ์์ ์์์ ์ ํํ๋๋ก ํ๋ <div class="controls__colors" id="jsColors">๋ฅผ ์์ฑํด์ฃผ๊ณ , ๊ทธ ์์ 9๊ฐ์ <div class="controls__color" style="background-color: #2c2c2c"></div>๋ฅผ ๊ฐ๊ฐ์ color๋ฅผ ์ฃผ์ด ์ง์ ํ ์ ์๊ฒ ํด์ฃผ์๋ค.
์ดํ์๋ <link rel="stylesheet" href="styles.css" />์ ํตํด css ํ์ผ์ ์ฐ๊ฒฐํด์ฃผ์๊ณ , <script src="app.js"></script>์ ํตํด javascript ํ์ผ์ ์ฐ๊ฒฐํ์๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก css๋ฅผ ์ง์ ํ๊ธฐ ์ ์, reset css๋ฅผ ์์ฑํ๊ณ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ํ์ฌ ์ถํ์ ์์ฑํ css ํ์ผ์ @import ํ๋๋ก ํ์๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ ์ด์ ๋ ๊ฐ๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ง๋ค ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํด์ ธ์๋ css ํน์ฑ์ด ์๋๋ฐ, ๊ทธ๋ฌํ ํน์ฑ์ ์ด๊ธฐํ ์์ผ์ค ํ ๋์ css๋ฅผ ์ ์ฉ์ํค๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ์งํํ๋ค. ๋ค์ํ ๋ฒ์ ์ css reset์ด ์กด์ฌํ์ง๋ง, ์์ ๋งํฌ๋ก ์ฐ๊ฒฐ๋ css reset์ ์ฌ์ฉํ์๋ค.
index.html์ ์ธ๋ถ์ ์ธ css๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์์ฑํ styles.css์ ์ฒซ๋ฒ์งธ ์ค์๋ ์์ ์์ฑํ reset.css๋ฅผ @import "reset.css"; ๋ฅผ ํตํด import ํด์ฃผ์๋ค.
body {
background-color: #f9f6fc;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
display: flex;
flex-direction: column;
align-items: center;
padding-top: 50px;
}
๋ฅผ ํตํด body์ ๋ด์ฉ์ ์ง์ ํด์ฃผ์๊ณ , column์ ํตํด ์ธ๋ก๋ก, center๋ฅผ ํตํด์ ๊ฐ์ด๋ฐ์ ์์ดํ
์ด ์ ๋ ฌ๋๋๋ก ํ์๋ค.
.canvas์์๋ width์ height๋ฅผ 600px๋ก ์ ํด์ฃผ๊ณ , border-rasdius๋ 15px๋ก ์ง์ ํ์ฌ ๋๋ถ๋ถ์ด ๋ฅ๊ธ๋ฅ๊ธํ๊ฒ ์ง์ ๋๋๋ก ํ์๋ค. box-shadow ํน์ฑ์ ํตํด์ ๊ธฐ์กด์ body์ canvas๋ฅผ ๊ตฌ๋ถํ ์ ์๋๋ก ํ์๋ค.
.controls์ .controls__colors์์๋ display:flex;๋ฅผ ํตํด์ item๋ค์ด ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌ๋๋๋ก ํ์๊ณ (flex-direction์ ๊ธฐ๋ณธ๊ฐ์ธ row) .control__colors์ .control__color์ ํฌ๊ธฐ๋ width์ height ๋ชจ๋ 50px๋ก ์ ์ฌ๊ฐํ ๋ชจ์์,border-radius ๊ฐ์ ๊ทธ ์ ๋ฐ์ ํด๋นํ๋ 25px๋ก ์ฃผ์ด ์ํ์ ์์ด์ฝ์ด ํ์ฑ๋๋๋ก ํ์๋ค.
