์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฌธ๋ฒ์ ๋ชจ๋ ๊ณต๋ถํ ์ดํ, ์ด๋ป๊ฒ ํ๋ฉด ์ด๊ฒ๋ค์ ํ์ฉํด ์ค์ ํด์ ์ฌ์ฉํ ์ ์์๊น ๊ณ ๋ฏผํ๋ค ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ๊ธฐ ์ข์ ์ฌ์ดํธ๋ฅผ ๋ฐ๊ฒฌํ์๋ค.
https://github.com/bradtraversy/vanillawebprojects
์ด ์ฌ์ดํธ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฉํ ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ์กด์ฌํ์๋๋ฐ ์์ผ๋ก ์ด๋ฅผ ์ํํด ๋๊ฐ๋ฉด์ velog๋ฅผ ์์ฑํด๋ณผ ์๊ฐ์ด๋ค.
์ด๋ฒ ๋ฒจ๋ก๊ทธ๋ HTML, CSS๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ค์ ํฌ์คํธ์์ JavaScript๋ฅผ ๊ตฌ์ฑํ ์์ ์ด๋ค.
์ฐ์ ๋ง๋ค์ด๋ณด๊ธฐ ์ ์ ์์ฑ๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ด๋ ๊ฒ ์๊ฒผ๋ค.
html์ ํฌ๊ฒ 4๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
<div class="movie-container">
<label>Pick a movie:</label>
<select id="movie">
<option value="10">Avengers: Endgame ($10)</option>
<option value="12">Joker ($12)</option>
<option value="8">Toy Story 4 ($8)</option>
<option value="9">The Lion King ($9)</option>
</select>
</div>
<ul class="showcase">
<li>
<div class="seat"></div>
<small>N/A</small>
</li>
<li>
<div class="seat selected"></div>
<small>Selected</small>
</li>
<li>
<div class="seat occupied"></div>
<small>Occupied</small>
</li>
</ul>
<div class="container">
<div class="screen"></div>
.row*6>.seat*8
</div>
css๋ ๊ฐ๋จํ๊ฒ ์ค์ํ ๊ฒ๋ง ์ง๊ณ ๋์ด๊ฐ๊ณ ์ ํ๋ค.
์ฐ์ body์ flex๋ฅผ ์ ์ฉํ์ฌ ๋ด๋ถ ์์๋ฅผ ๊ฐ์ด๋ฐ๋ก ์ ๋ ฌํ์๋ค.
container ์๋ perspective๋ฅผ ์ ์ฉํ์ฌ ์คํฌ๋ฆฐ์ rotate๋ฅผ ์ ์ฉํ์์ ๋, ์๊ทผ๊ฐ์ด ์์ฑ๋๋๋ก ๋ง๋ค์๋ค.
seat์์ ์ผ์ชฝ 2๋ฒ์งธ ์ด๊น์ง๋ ์ข์ธก์ผ๋ก ์ข ๋ ์ด๋ํด์ฃผ๊ณ , ์ค๋ฅธ์ชฝ์์๋ถํฐ 2๋ฒ์งธ ์ด๊น์ง๋ ์ฐ์ธก์ผ๋ก ์ข ๋ ์ด๋ํด์ค๋ค.
occupied๋ ์ข์์ ํด๋ฆญ์ด ๋ถ๊ฐ๋ฅํ์ฌ ์์ ํ์์ผ๋ก ์ง์ ํ๋ค.
not(occuped)์ธ ์ข์์ cursor: pointer๋ฅผ ์ง์ ํด์ฃผ๊ณ , ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋, scale๋ฅผ ํค์ด์ค๋ค.
screen์๋ roateX๋ฅผ ์ ์ฉ์์ผ์ค๋ค.