2023๋ 4์ 3์ฃผ์ฐจ ์ฃผ๊ฐํ๊ณ
Time tracker
๊ตฌ๋ถ | ๋ชฉํ์๊ฐ | ์ฌ์ฉ์๊ฐ | ๋ฌ์ฑ๋ฅ % | ์์ธ๋ถ์ | ๋ค์ ์ฃผ์ ์ ์ฉํ ๊ฒ |
---|---|---|---|---|---|
๐งโโ๏ธ์์ | - | 5 | |||
โ๏ธ์ง์ | 82 | 77.5 | 95% | ์ด๋ฒ์ฃผ๋ ์๋ค ๋๋ฌด ๋ง์ด ๋จ์๋ค ใ .ใ โฆโฆ.. | ์์ ์๊ธฐ ์ ํ๋ ๊ฑด ์์งํ ๋ถ๊ฐ๋ฅํ๊ณ ํ๋ฃจ์ ์ต๋ 30๋ถ ์ ์ฌ์ด๋ ์ ๋
๋ฐฅ ๊ฐ์ด ๋จน์ ๋ ์ ์ฌ์ ์ฌ๋งํ๋ฉด ํผ์ ๋จน์ ์ฌ๋์๋ 11์์.. |
์ฌํ์ | 3 | 7 | 233% | ||
๐โโ๏ธ์ ์ฒด์ | 1 | - | |||
๐์ | 49 | 50 | 102% | ||
๐งน๊ธฐํ | - | 28 |
์๊ฐ๊ธฐ๋ก
Weekly Feedback

table
์ด๋ฒ ์ฃผ ๋ชฉํ ์ด๋ฒ ์ฃผ ๊ฒฐ๊ณผ 1. Java ๋ณต์ต
๋ชฉํ : 14, 15, 6, 7, 8์ฅ ๋ฐฑ์ง ๋ณต์ต(๋งค์ผ ํ ์ฑํฐ์ฉ)
์๊ฐ : ์คํ 6์ 30๋ถ~7์ 30๋ถ
- ๊ทธ๋ ๋ฐฑ์ง ๋ณต์ตํ๊ธฐ๋ก ํ ์ฑํฐ ์ถ๊ทผํ ๋ ์์ฝ๋ณธ, ์๋ณด์นด๋ก ๋ณต์ต
2. ๋ถ์น์ ํ SQL ํ๋ก๊ทธ๋๋ฐ
๋ชฉํ : 11~14์ฑํฐ
- 11. ์กฐ์ธ
- 12. ์๋ธ์ฟผ๋ฆฌ
- 13. ์งํฉ ์ฐ์ฐ
- 14. ๋ถ์ ํจ์
์๊ฐ : ์ค์ 8์ 10๋ถ~10์
3. Javascript
๋ชฉํ : ๊ทธ๋ ์์ ๋ ๋ฐฐ์ด ๋ด์ฉ ๋ณต์ต, ์ ๋ฆฌ
์๊ฐ : โ ์ค์ 11์ 30๋ถ~์คํ 2์ โก ์คํ 3์~์คํ5์
4. CSS
- 1์ผ 1w3schools(how to ๋ถ์ - ์ฃผ์๋ฌ๊ณ ํต์ฌ ์ ๋ฆฌํ๊ธฐ)
์ :
Tabs
ํ :
Vertical Tabs
์ :
Tab Headers
๋ชฉ :
Full Page Tabs
๊ธ :
Hover Tabs
ํ :
To Navigation1. Java ๋ณต์ต : ๋ฌ์ฑ๋ฅ 40%
- 14, 15์ฅ ์๋ฃ
2. ๋ถ์น์ ํ SQL ํ๋ก๊ทธ๋๋ฐ : ๋ฌ์ฑ๋ฅ 13%
- 11์ฑํฐ ์กฐ์ธ p.249๊น์ง
3. Javascript : ๋ฌ์ฑ๋ฅ 100%
4. CSS : ๋ฌ์ฑ๋ฅ 100%
์ฐ์ ์์์ ๋ํ ๊ณ ๋ฏผ
์ฒ์ ๊ณํ์ ์ด๋ ๊ฒ ์ธ์ ์๋ค.
8:00~10:00(2h) : SQL(๋ถ์น์ ํ SQL ํ๋ก๊ทธ๋๋ฐ)
11:30~17:00(4.5h) : Javascript
18:30~19:30(1h) : Java ๋ฐฑ์ง ๋ณต์ต
19:30~21:00(1.5h) : w3schools how to css ๋ถ์
์ง๊ธ ์๊ฐํด๋ณด๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ผ๋ง๋ ๋ง๋งํ๊ฒ ๋ดค์ผ๋ฉด ์ด๋ฐ ๊ณํ์ ์ธ์ ๋ ์ถ๋ค ใ
์ํ์์ ๋ชฐ์์น๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ ์ง๋์ ๋ฐ๋ผ๊ฐ๊ณ , ๊ธฐ์กด์ ๊ณ์ ํ๊ณ ์์๋ ์๋ฐ ๋ณต์ต, SQL, CSS ๋ถ์๊น์ง ํ๋ ค๋ ๋๋ฌด ๋ฒ ์ฐผ๋ค.
์๋ฐ๋ฅผ ๊พธ์คํ ๋ณต์ตํด ์ฅ๊ธฐ๊ธฐ์ต์ ๋จ๊ธฐ๊ณ ์ถ์ด ํฌ๊ธฐํ๊ณ ์ถ์ง ์์๊ณ , ์ ๋ฌด๋ฅผ ํ๋ฉฐ SQL์์๋ ๋ถ์กฑํจ์ ๋๊ปด์๊ธฐ์ ํฌ๊ธฐํ๊ณ ์ถ์ง ์์๋ค. ๊ทธ๋์ CSS๋ฅผ ํฌ๊ธฐํด์ผ ํ๋ ๊ณ ๋ฏผ์ด ๋ง์๋ค. ์ด๋ค ๊ณผ๋ชฉ์ ์ฐ์ ์์์ ๋์ด์ผ ํ ์ง ๊ฐ์ด ์ ์กํ ์ ์๋๊ป ์กฐ์ธ์ ๊ตฌํ๋ค. ์ด๋ฒ ์ฃผ์๋ JS โ CSS โ JAVA โ SQL ์์๋ก ๊ณต๋ถํ๋ผ๊ณ ๊ถ์ ํด์ฃผ์ จ๋ค.
CSS๋ ์ง๊ธ์ฒ๋ผ ๋งค์ผ ๋ถ์ํ๋ฉด ์กธ์
ํ ๋์ฏค ์
๋ฌดํ ๋ ์ด๋ ค์์ด ์์ ๊ฑฐ๋ผ๊ณ ๊ผญ ์ค์ํ๊ฒ ํ์ตํด์ผ ํ๋ค๊ณ ๋ง์ํ์
จ๋ค. ์ค์ ๋๋ก ์๋ฟ์๋ ๊ฒ์ ์
๋ฌด๋ฅผ ํ๋ฉด์ CSS๋ฅผ ๊ต์ฅํ ์ซ์ดํ์๋๋ฐ ํ์์์ ๋งค์ผ ํ๋์ฉ ๋ถ์ํ๋ฉฐ ๊ณต๋ถํด๋ณด๋ ์ฌ์ค์ ๋ชจ๋ฅด๋๊น ์ด๋ ค์์ ์ซ์ดํ๋ ๊ฒ์ด์๋ค.
์ฒ์์ ๋ถ์ํ ๋ ๋ชจ๋ฅด๋ ์์ฑ๋ค์ด ๋ง์ ๊ฒ์ ๋จน์์ง๋ง, ์ฐจ๊ทผ์ฐจ๊ทผ ์ฑ
์ ์ฐพ์๊ฐ๋ฉฐ ๊ณต๋ถํ๋๊น ์๊ฐ๋ณด๋ค ์ด๋ ต์ง ์์๋ค. ์ ์ง๊ธ๊น์ง ์ด๋ ๊ฒ ํํผํ๊ณ ๋๋ ค์ํ์๊น? ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ์๋ ๊ฒ ๋ง์์ง๋ ๋๋ ค์์ด ์ฌ๋ผ์ง๊ณ ์ฌ๋ฐ๋ค. "์ํ๋ฉด ์ฌ๋ฏธ์๊ณ ๋ชปํ๋ฉด ์ฌ๋ฏธ์๋ค"๋ ๋ง์ด ์ ๋ง ๋ง๋ค.
์กฐ์ธ ํด์ฃผ์ ๋๋ก ์ฐ์ ์์๊ฐ ์ ์ผ ๋์ JS๋ฅผ ๊ฐ์ฅ ๋จผ์ ์๊ฐ ๋ฐฐ์น๋ฅผ ํ๊ณ ๋จ๋ ์๊ฐ์ CSS ๋ถ์, JAVA ๋ณต์ต์ ํ๊ธฐ๋ก ํ๋ค! SQL์ ์์ ๋ท์ ์ด ๋์ด์ ์กฐ๊ธ ์์ฝ๊ธด ํ์ง๋ง ํ์ ๋ ์๊ฐ ์์์๋ ์ฐ์ ์์์ ๋ง๊ฒ ํ์ตํด ์ต๋์ ํจ์จ์ ๋ด์ผ ํ๊ธฐ ๋๋ฌธ์..!
๊ธ์ฃผ์ ๋ฐฐ์ด ๊ฒ๋ค
Java
์๋ฐ์ ์ ์ 14(๋๋ค์ ์คํธ๋ฆผ), 15(์ ์ถ๋ ฅ I/O)์ฅ ์น ํ์ ๋ฐฑ์ง ๋ณต์ต


15์ฅ์ ์งง์ ์ฃผ๊ธฐ๋ก ์์ฃผ ๋ณต์ตํด์ผ๊ฒ ๋ค ์ ๋ฐ์ ๋ชป์ผ๋ค
Javascript
์๋ฐ์ ๋์ผํ ๋ถ๋ถ์ ์ ๊ฑฐํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ ๊ณ ์ ํ ํน์ง๋ค๋ง ํต์ฌ์ผ๋ก ๋ชจ์์ 3์ผ๋ง์ ์์ฑ์ผ๋ก ๋ฐฐ์ ๋ค. ๊ทธ 3์ผ๋์ ใ ใ ใ โฆ.? ๊ณ์ ์ด ํ์ ์ด์์ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ์ง๋๋ ๋ฏธ์น๋ฏ์ด ๋น ๋ฅด๊ณ ๋ณต์ตํ ์๊ฐ์ ๋ถ์กฑํ๋ฐ ๊ทผ๋ฐ ๋ ๋๋ฌด ์ฌ๋ฐ๊ณ โฆโฆโฆ
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ฐ๋ฉด์ ์ฌ๊ธฐ ์ค๊ธธ ์ ํ๊ตฌ๋ ์ ๋ง ์ ํ ์ ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ์ ๋ง ๋ง์ด ํ๋ค. ๋ ํผ์ ์ฑ ์ฌ์ ๋ดค์ผ๋ฉด ์๊ฐ ๋ญ๋นํ๊ณ ๋จผ ๊ธธ๋์๊ฐ์ ๊ฒ ๊ฐ์๋ฐ ํต์ฌ๋ง ์ง์ด์ ์ค๋ช ํด์ฃผ์๋๊น ๋๋ฌด ์ข์๋ค. ๋จ๊ถ์ฑ ์ ์๋๊ป ๋ฐฐ์ฐ๋๊ฒ ์ ๋ง ์๊ด,,,
์๋ฐ๋ ์ ์ฌํ ๋ถ๋ถ๋ ๋ง์ด ์์๊ณ (๋๋ค๋ ์๋ฐ์์ ์ฐ๋ ๋๋ก ๋๊ฐ์ด ์จ๋ ์๋ํ๋ ์ ๊ธฐํ์ ใ ใ ) ๋ค๋ฅธ ๋ถ๋ถ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด๋ ๋์ผํ ์์ฑ์๋ฅผ ์ฌ์ฉํด์ ์์ฑํด๋ ๋ชจ๋ ๊ฑธ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ํ๋กํ ํ์ ์ด๋ผ๋ ๊ฑธ ์จ์ผ ํ๋ค๋ ๊ฒ ์ ๊ธฐํ๋ค. ์ฒ์์ ๋ฐฐ์ธ ๋ ์ข ์ด๋ ค์ ๋๋ฐ ์ดํด๊ฐ ์ ๋๋ฉด ๊ทธ๋ ค๋ณด๋ผ๊ณ ํ์ ์ ์ง์ ๊ทธ๋ ค๋ณด์๋๋ ์กฐ๊ธ์..? ์ดํด๊ฐ ๋ ๊ฒ ๊ฐ๋ค.ย ๋ญ๋ ์ดํด ์ ๋๋ฉด ์ฐ๊ณ ๊ทธ๋ ค๋ณด์ ๋จธ๋ฆฌ์์ผ๋ก ์๊ฐ๋งํ๋ฉด ํด๊ฒฐ๋์ง ์์
๊ณผ์ 0 : 5 * 5 ๋น๊ณ ํ ์์ฑ
์ฝ๋
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> table { background-image: url( "jokebear.png" ); } tr > td { border: 1px solid; padding: 50px; font-size: 30px; transition: 0.3s; } tr > td:hover { background-color: yellowgreen; opacity: 0.7; } </style> </head> <body> <!-- <table onmouseout = "this.style.color = 'red'" onmouseover="this.style.color = 'blue'"> --> <table> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </table> </body> <script> let bingo = new Array(25); // 1~25 ๊ฐ์ bingo ๋ฐฐ์ด์ ์ฐจ๋ก๋ก ๋ฃ๋๋ค. for (let i = 0; i < bingo.length; i++) { bingo[i] = i + 1; } bingo.sort(() => Math.random() - 0.5); // bingo ๋ฐฐ์ด์ ๋ค์ด์๋ ๊ฐ๋ค์ ์๋๋ค. let trs = document.querySelectorAll('tr'); // ํ๊ทธ๊ฐ tr์ธ ์์๋ค์ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค. let td; let tmp = 0; for (let i = 0; i < trs.length; i++) { // tr์ ๊ฐ์(์ด 5ํ) ๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค. td = trs[i].children; // tr์ ์์ ์์๋ค์ ๊ฐ์ ธ์จ๋ค.(td 5๊ฐ) for (let j = 0; j < td.length; j++) { // td innerHTML์ ๋น๊ณ ์ซ์๋ฅผ ๋ฃ์ด์ค๋ค. td[j].innerHTML = bingo[tmp++]; } } </script> </html>
๊ณผ์ 1 : ์ฒดํฌํ ์์ textarea์ ๋ณด์ฌ์ฃผ๊ธฐ
1์ฐจ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #check { font-size: 30px; float: left; margin-right: 30px; } textarea { width: 400px; height: 400px; } </style> </head> <body> <!-- 1.[์๋ฃ] ํ๋ฉด ๊ทธ๋ฆฌ๊ธฐ 2. ์ด๋ฒคํธ ๊ฑธ๊ธฐ ์ผ๋จ ์ ์ฒด๋ ์ ์ธํ๊ณ ํ๋ํ๋์ฉ๋งํ์. 1) ์ฒดํฌ๋ฐ์ค๋ฅผ ํด๋ฆญํ๋ฉด textarea์ ๊ฐ์ด ๋์์ผ ํ๋ค. ๊ทธ๋ผ ์ผ๋จ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ํ์ํ๋ค. name์ด sports์ธ ์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋์์ ๊ฒฝ์ฐ์ ๊ทธ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ innerHTML์ ๊ฐ์ ธ์์ ๊ทธ ๋ด์ฉ์ textarea์ ๋ฃ์ด์ค๋ค. 2) ์ฒดํฌ๋ฐ์ค ์ฒดํฌ ์ทจ์๋ฅผ ํ๋ฉด ๊ทธ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ innerHTML์ ๊ฐ์ ธ์์ ๊ทธ ๋ด์ฉ๊ณผ ์ผ์นํ๋ textarea์ ๋ด์ฉ์ replaceํด์ ์ง์ด๋ค. 3. ์ฒดํฌ๋ ํญ๋ชฉ์ ๊ฐ์ด textarea์ ๋์ค๊ฒ ํ๋ค. --> <div id="check"> <input type="checkbox" name="" id="all" value="๐ฅ์ ์ฒด๐ฅ"> ๐ฅ์ ์ฒด๐ฅ <br> <input type="checkbox" name="sports" id="basketball" value="๐๋๊ตฌ"> ๐๋๊ตฌ <br> <input type="checkbox" name="sports" id="soccer" value="โฝ๏ธ์ถ๊ตฌ"> โฝ๏ธ์ถ๊ตฌ <br> <input type="checkbox" name="sports" id="baseball" value="โพ๏ธ์ผ๊ตฌ"> โพ๏ธ์ผ๊ตฌ <br> <input type="checkbox" name="sports" id="volleyball" value="๐๋ฐฐ๊ตฌ"> ๐๋ฐฐ๊ตฌ <br> </div> <textarea id="textarea"></textarea> </body> </html> <script> const sports = document.getElementsByName('sports'); const textarea = document.getElementById('textarea'); var i; for (i = 0; i < sports.length; i++) { sports[i].addEventListener("change", function(e) { // ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ value๋ฅผ ๊ฐ์ ธ์จ๋ค. const value = e.srcElement.value; // ๋ด์ฉ์ด ์์ผ๋ฉด ์ญ์ ํด์ผ ํ๋๋ฐ ์ด๊ฑฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ค๊น? if (e.srcElement.checked) { // e.srcElement.checked๊ฐ true์ด๋ฉด textarea์ ์ถ๊ฐํด์ฃผ๊ณ textarea.value += value; } else { // false๋ฉด ์ ๊ฑฐํด์ค๋ค. textarea.value = textarea.value.replace(value, ""); } }); } const allClick = document.getElementById('all'); allClick.onclick = function(e) { let values = ""; let checkedValues = ""; // ์ ์ฒด ์ฒดํฌ๋ฐ์ค ์ฒดํฌ ์ฌ๋ถ ๊ฐ์ ธ์ค๊ธฐ const checkedYn = e.srcElement.checked ? true : false; // ์ฒดํฌ ๋์ด์์ผ๋ฉด ํ์ ์ฒดํฌ ๋ฐ์ค๋ฅผ ์ ๋ถ ์ฒดํฌํด์ฃผ๊ณ ์ฒดํฌ๊ฐ ๋์ด์์ง ์์ผ๋ฉด ํ์ ์ฒดํฌ ๋ฐ์ค๋ค์ ์ ๋ถ ์ฒดํฌ ํด์ ํด์ค๋ค. for (let i = 0; i < sports.length; i++) { sports[i].checked = checkedYn; } for (let i = 0; i < sports.length; i++) { // checked = true -> ๋ชจ๋ sports ์์๋ค์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค. values += sports[i].value; // checked = false -> ๋ง์ฝ์ ์ ์ฒด ์ฒดํฌ๋ฅผ ํด์ ํ๋๋ฐ ์ถ๊ตฌ๊ฐ ์ ํ๋์ด์์ผ๋ฉด ์ถ๊ตฌ๋ ์ด์์์ด์ผ ํจ ๊ทธ๊ฑธ ์ํด์ checkedValues์ ๊ฐ๋ค์ ๋ฃ์ด์ค๋ค. if (sports[i].checked) { checkedValues += sports[i].value; } } textarea.value = checkedYn ? values : checkedValues; } </script>
2์ฐจ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #check { font-size: 30px; float: left; margin-right: 30px; } textarea { width: 400px; height: 400px; } </style> </head> <body> <!-- 1.[์๋ฃ] ํ๋ฉด ๊ทธ๋ฆฌ๊ธฐ 2. ์ด๋ฒคํธ ๊ฑธ๊ธฐ ์ผ๋จ ์ ์ฒด๋ ์ ์ธํ๊ณ ํ๋ํ๋์ฉ๋งํ์. 1) ์ฒดํฌ๋ฐ์ค๋ฅผ ํด๋ฆญํ๋ฉด textarea์ ๊ฐ์ด ๋์์ผ ํ๋ค. ๊ทธ๋ผ ์ผ๋จ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ํ์ํ๋ค. name์ด sports์ธ ์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋์์ ๊ฒฝ์ฐ์ ๊ทธ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ innerHTML์ ๊ฐ์ ธ์์ ๊ทธ ๋ด์ฉ์ textarea์ ๋ฃ์ด์ค๋ค. 2) ์ฒดํฌ๋ฐ์ค ์ฒดํฌ ์ทจ์๋ฅผ ํ๋ฉด ๊ทธ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ innerHTML์ ๊ฐ์ ธ์์ ๊ทธ ๋ด์ฉ๊ณผ ์ผ์นํ๋ textarea์ ๋ด์ฉ์ replaceํด์ ์ง์ด๋ค. 3. ์ฒดํฌ๋ ํญ๋ชฉ์ ๊ฐ์ด textarea์ ๋์ค๊ฒ ํ๋ค. --> <div id="check"> <input type="checkbox" name="sports" id="all" value="๐ฅ์ ์ฒด๐ฅ"> ๐ฅ์ ์ฒด๐ฅ <br> <input type="checkbox" name="sports" id="basketball" value="๐๋๊ตฌ"> ๐๋๊ตฌ <br> <input type="checkbox" name="sports" id="soccer" value="โฝ๏ธ์ถ๊ตฌ"> โฝ๏ธ์ถ๊ตฌ <br> <input type="checkbox" name="sports" id="baseball" value="โพ๏ธ์ผ๊ตฌ"> โพ๏ธ์ผ๊ตฌ <br> <input type="checkbox" name="sports" id="volleyball" value="๐๋ฐฐ๊ตฌ"> ๐๋ฐฐ๊ตฌ <br> </div> <textarea id="textarea"></textarea> </body> </html> <script> const sportsCheckbox = document.getElementsByName('sports'); const textarea = document.getElementById('textarea'); var i; function change(e) { const id = e.srcElement.id; // ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ id // id๊ฐ all์ด๋ฉด ํ์ ์ฒดํฌ ๋ฐ์ค๋ฅผ ์ ๋ถ ์ฒดํฌ/์ฒดํฌ ํด์ ํด์ค๋ค. if (id == 'all') { for (let i = 0; i < sportsCheckbox.length; i++) sportsCheckbox[i].checked = e.srcElement.checked; } let result = ""; // ์ฒดํฌ ๋์ด์๋ ๊ฐ๋ค์ ์ค๋ฅธ์ชฝ textarea์ ๋ฃ์ด์ค๋ค. for (let i = 0; i < sportsCheckbox.length; i++) { let sports = sportsCheckbox[i]; // ์ฒดํฌ๋์ด์๊ณ id๊ฐ ์ ์ฒด๊ฐ ์๋ ์์์ ๊ฐ์ result์ ๋ฃ์ด์ค๋ค. if (sports.checked && sports.id != 'all') { result += sports.value; } } // ์ต์ข ๊ฐ์ textarea์ value์ ๋ฃ์ด์ค๋ค. textarea.value = result; } for (i = 0; i < sportsCheckbox.length; i++) { sportsCheckbox[i].addEventListener("click", change); } </script>
const sports = document.getElementsByName('sports');
const textarea = document.getElementById('textarea');
var i;
for (i = 0; i < sports.length; i++) {
sports[i].addEventListener("change", function(e) {
// ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ value๋ฅผ ๊ฐ์ ธ์จ๋ค.
const value = e.srcElement.value;
// ๋ด์ฉ์ด ์์ผ๋ฉด ์ญ์ ํด์ผ ํ๋๋ฐ ์ด๊ฑฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ถํด์ค๊น?
if (e.srcElement.checked) { // e.srcElement.checked๊ฐ true์ด๋ฉด textarea์ ์ถ๊ฐํด์ฃผ๊ณ
textarea.value += value;
} else { // false๋ฉด ์ ๊ฑฐํด์ค๋ค.
textarea.value = textarea.value.replace(value, "");
}
});
}
const allClick = document.getElementById('all');
allClick.onclick = function(e) {
let values = "";
let checkedValues = "";
// ์ ์ฒด ์ฒดํฌ๋ฐ์ค ์ฒดํฌ ์ฌ๋ถ ๊ฐ์ ธ์ค๊ธฐ
const checkedYn = e.srcElement.checked ? true : false;
// ์ฒดํฌ ๋์ด์์ผ๋ฉด ํ์ ์ฒดํฌ ๋ฐ์ค๋ฅผ ์ ๋ถ ์ฒดํฌํด์ฃผ๊ณ ์ฒดํฌ๊ฐ ๋์ด์์ง ์์ผ๋ฉด ํ์ ์ฒดํฌ ๋ฐ์ค๋ค์ ์ ๋ถ ์ฒดํฌ ํด์ ํด์ค๋ค.
for (let i = 0; i < sports.length; i++) {
sports[i].checked = checkedYn;
}
for (let i = 0; i < sports.length; i++) {
// checked = true -> ๋ชจ๋ sports ์์๋ค์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
values += sports[i].value;
// checked = false -> ๋ง์ฝ์ ์ ์ฒด ์ฒดํฌ๋ฅผ ํด์ ํ๋๋ฐ ์ถ๊ตฌ๊ฐ ์ ํ๋์ด์์ผ๋ฉด ์ถ๊ตฌ๋ ์ด์์์ด์ผ ํจ ๊ทธ๊ฑธ ์ํด์ checkedValues์ ๊ฐ๋ค์ ๋ฃ์ด์ค๋ค.
if (sports[i].checked) { checkedValues += sports[i].value; }
}
textarea.value = checkedYn ? values : checkedValues;
}
const sportsCheckbox = document.getElementsByName('sports');
const textarea = document.getElementById('textarea');
var i;
function change(e) {
const id = e.srcElement.id; // ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ id
// id๊ฐ all์ด๋ฉด ํ์ ์ฒดํฌ ๋ฐ์ค๋ฅผ ์ ๋ถ ์ฒดํฌ/์ฒดํฌ ํด์ ํด์ค๋ค.
if (id == 'all') {
for (let i = 0; i < sportsCheckbox.length; i++)
sportsCheckbox[i].checked = e.srcElement.checked;
}
let result = "";
// ์ฒดํฌ ๋์ด์๋ ๊ฐ๋ค์ ์ค๋ฅธ์ชฝ textarea์ ๋ฃ์ด์ค๋ค.
for (let i = 0; i < sportsCheckbox.length; i++) {
let sports = sportsCheckbox[i];
// ์ฒดํฌ๋์ด์๊ณ id๊ฐ ์ ์ฒด๊ฐ ์๋ ์์์ ๊ฐ์ result์ ๋ฃ์ด์ค๋ค.
if (sports.checked && sports.id != 'all') {
result += sports.value;
}
}
// ์ต์ข
๊ฐ์ textarea์ value์ ๋ฃ์ด์ค๋ค.
textarea.value = result;
}
for (i = 0; i < sportsCheckbox.length; i++) {
sportsCheckbox[i].addEventListener("click", change);
}
๊ณผ์ 2 : ์์ ์ฎ๊ธฐ๊ธฐ
>>, << : ์ ์ฒด ์์ ์ฎ๊ธฐ๊ธฐ
1์ฐจ
html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> select { float: left; width: 70px; height: 100px; } select > option { /* font-size: 30px; */ /* margin: 10px; */ } #buttons { float: left; } #buttons > button{ width: 30px; margin: 0 10px; display: block; } </style> </head> <body> <!-- 1. html ์์ ๊ทธ๋ฆฌ๊ธฐ 1) select ์์ฑ 2) ๋ฒํผ ์์ฑ 3) ์ค๋ฅธ์ชฝ select ์์ฑ --> <select id="sports" multiple> <option id="basketball">๐๋๊ตฌ๐</option> <option id="soccer">โฝ๏ธ์ถ๊ตฌโฝ๏ธ</option> <option id="baseball">โพ๏ธ์ผ๊ตฌโพ๏ธ</option> <option id="volleyball">๐๋ฐฐ๊ตฌ๐</option> </select> <div id="buttons"> <button id="add">></button> <button id="addAll">>></button> <button id="minus"><</button> <button id="minusAll"><<</button> </div> <select id="sports2" multiple></select> </body>
js
<script> const originalSports = document.getElementById('sports'); // ์ผ์ชฝ select(์๋ณธ) const movedSports = document.getElementById('sports2'); // ์ค๋ฅธ์ชฝ select(์ด๋) // ์ ํ ๋ฃ๊ธฐ ๋ฒํผ(add), ์ ํ ๋นผ๊ธฐ ๋ฒํผ(minus) ํฉ์นจ function addOption(event) { const id = event.srcElement.id; // ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ id๋ฅผ ๊ฐ์ ธ์จ๋ค. // 1. ์ ํํ ์์๋ฅผ ๊ฐ์ ธ์จ๋ค => id๊ฐ add๋ฉด ์ ํํ options๋ฅผ original์์ ๊ฐ์ ธ์ค๊ณ minus๋ฉด ์ ํํ options๋ฅผ moved์์ ๊ฐ์ ธ์จ๋ค. const selectedOptions = id == 'add' ? Array.from(originalSports.selectedOptions) : Array.from(movedSports.selectedOptions); // ์ ํํ ์์๊ฐ ์ด๋๋ select => id๊ฐ add๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ movedSports, id๊ฐ minus๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ originalSports const toBeAdded = id == 'add' ? movedSports : originalSports; // 2. ์ ํํ ์์๋ฅผ ์ด๋์ํจ๋ค. for (let i = 0; i < selectedOptions.length; i++) { toBeAdded.appendChild(selectedOptions[i]); } } // ์ ์ฒด ๋ฃ๊ธฐ ๋ฒํผ(addAll), ์ ์ฒด ๋นผ๊ธฐ ๋ฒํผ(minusAll)ํฉ์นจ function addAllOption(event) { const id = event.srcElement.id; // ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ id๋ฅผ ๊ฐ์ ธ์จ๋ค. // 1. select์ ๋ชจ๋ option์ ๊ฐ์ ธ์จ๋ค. => id๊ฐ addAll์ด๋ฉด options๋ฅผ original์์ ๊ฐ์ ธ์ค๊ณ minusAll์ด๋ฉด moved์์ ๊ฐ์ ธ์จ๋ค. const options = id == 'addAll' ? Array.from(originalSports.children) : Array.from(movedSports.children); // ์์๊ฐ ์ด๋๋ select => id๊ฐ addAll๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ movdedSports, id๊ฐ minusAll์ด๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ originalSports const toBeAdded = id == 'addAll' ? movedSports : originalSports; // 2. option๋ค์ ์ด๋์ํจ๋ค. for (let i = 0; i < options.length; i++) { toBeAdded.appendChild(options[i]); } } // ์ ํ ์ถ๊ฐ ๋ฒํผ document.getElementById('add').addEventListener("click", addOption); // ์ ํ ๋นผ๊ธฐ ๋ฒํผ document.getElementById('minus').addEventListener("click", addOption); // ์ ์ฒด ์ถ๊ฐ ๋ฒํผ document.getElementById('addAll').addEventListener("click", addAllOption); // ์ ์ฒด ๋นผ๊ธฐ ๋ฒํผ document.getElementById('minusAll').addEventListener("click", addAllOption); </script> </html>
2์ฐจ : 1์ฐจ ์์ฅ๋ ํผ๋๋ฐฑ ํ ๋ค์
const originalSports = document.getElementById('sports'); // ์ผ์ชฝ select(์๋ณธ) const movedSports = document.getElementById('sports2'); // ์ค๋ฅธ์ชฝ select(์ด๋) // ์ ํ๋ option์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค. function moveSelectedLeftToRight() { moveSelected(left, right); } // ์ ํ๋ option์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค. function moveSelectedRightToLeft() { moveSelected(right, left); } // ๋ชจ๋ option์ ์ฎ๊ธด๋ค. function moveAll(from, to) { // 1. ๋ชจ๋ option์ ์ ํํ๋ค. selectAll(from); // 2. ์ ํ๋ option์ ์ฎ๊ธด๋ค. moveSelected(from, to); } // ์ ํ๋ option์ from์์ to๋ก ์ฎ๊ธด๋ค. function moveSelected(from, to) { } // target์ ๋ชจ๋ option์ function selectAll(target){ }
const leftSelect = document.getElementById('leftSelect'); // ์ผ์ชฝ select(์๋ณธ) const rightSelect = document.getElementById('rightSelect'); // ์ค๋ฅธ์ชฝ select(์ด๋) // ์ ํ๋ option์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค. function moveSelectedLeftToRight() { moveSelected(leftSelect, rightSelect); } // ์ ํ๋ option์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค. function moveSelectedRightToLeft() { moveSelected(rightSelect, leftSelect); } // ๋ชจ๋ option์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค. function moveAllLeftToRight() { moveAll(leftSelect, rightSelect); } // ๋ชจ๋ option์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค. function moveAllRightToLeft() { moveAll(rightSelect, leftSelect); } // ๋ชจ๋ option์ ์ฎ๊ธด๋ค. function moveAll(from, to) { // 1. ๋ชจ๋ option์ ์ ํํ๋ค. selectAll(from); // 2. ์ ํ๋ option์ ์ฎ๊ธด๋ค. moveSelected(from, to); } // ์ ํ๋ option์ from์์ to๋ก ์ฎ๊ธด๋ค. function moveSelected(from, to) { const selectedOptions = Array.from(from.selectedOptions); for (let i = 0; selectedOptions.length; i++) { to.appendChild(selectedOptions[i]); } } // target์ ๋ชจ๋ option์ ์ ํํ๋ค. function selectAll(target){ const options = target.children; for (let i = 0; i < options.length; i++) { options[i].selected = true; } }
๋ด๊ฐ ์์ฑํ ์ฝ๋๋ ์ ํํ ์์๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฑธ ์ผํญ ์ฐ์ฐ์๋ก ์ฒ๋ฆฌํ ๊ฒ ๋๋ฌธ์ธ์ง ์ฝ๋๊ฐ ์ ํ ํ ๋์ ๋ค์ด์ค์ง ์์๋ค.
์์ฅ๋์ด ์์ฑํด์ฃผ์ ์ฝ๋๋ moveSelectedLeftToRight()์ moveSelectedRightToLeft()๋ฅผ ๋ง๋ค์ด์ moveSelected()์ ์ธ์๋ง ์๋ฆฌ ๋ฐ๊พธ์ด์ ๋ฃ์ด์ฃผ๋๊น ํจ์ ์ฌ์ฌ์ฉ๋ ํ๋ฉด์ ์ด ํจ์๊ฐ ์ด๋ค ๋์, ์ญํ ์ ํ๋์ง ๋ณด์ฌ ํจ์ฌ ์๋๋ฅผ ํ์ ํ๊ธฐ ์ฌ์์ก๋ค.
๊ฐ์ฒด์งํฅ 5์์น์ค ๋จ์ผ ์ฑ ์ ์์นโฆ ์ ํ ์๋ฟ์ง ์์๋๋ฐ ์์ ์ด๋ ๊ณผ์ ํ๋ฉด์ ์ด์ ์ผ ์ดํดํ๋ค. ์ธํฐ๋ท์์ ๋ ๋๋ ์ฃผ์ ๋ฌ์ง ๋ง๋ผ๊ณ ํ๋ ๊ฒ ๋ง๋ ์ ๋๋ ์๋ฆฌ๋ผ๊ณ ์๊ฐํ์๋๋ฐ ์ฃผ์์ด ํ์์์ ์ ๋๋ก ์๋๊ฐ ๋ค ๋ณด์ด๊ณ ๊น๋ํ ์ฝ๋๋ฅผ ์์ฑํ๋ผ๋ ๋ป์ด ์๋์์๊น? ํ๋์ ํจ์๊ฐ ํ๋์ ์ญํ ๋ง ๊ฐ์ง๊ณ ์์ผ๋ ๊ตณ์ด ์ฃผ์์ ๋ฌ์ง ์์๋ ์ฝ๋์ ์๋๋ฅผ ํ์ ํ๊ธฐ ์ฌ์์ก๋ค. ์ด๊ฒ ๋ฐ๋ก ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๊ตฌ๋ํ๊ณ ๊นจ๋ฌ์์ ์ป์ด์ ๋๋ฌด ์ง๋ฆฟํ๋ค..!
์๋๋ ์ ๋ ๋ต์ ์๋ ค์ฃผ์ง ์์ผ์๊ณ ์ค๋ซ๋์ ๊ณ ๋ฏผํด์ ๋๋ง์ ๋ฌธ์ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฐพ์๊ฐ๋ผ๊ณ ํ์๋๋ฐ ์ฃผ์ ์ด์ฌํ ๋ฌ์๊ณ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ฌ์ง ใ ใ ใ ใ ? ๊ฐ ๋ณด์ฌ์ ์์ผ๋ก ์ด๋ฐ์์ผ๋ก ์ง๋ผ๊ณ ๊ฐ์ด๋๋ฅผ ์ฃผ์ ๊ฒ ๊ฐ๋ค. ์ฒ์์ ๊ฐ์ด๋ ์ฃผ์ จ์ ๋ ์ ์ง์ง ๊ฐํ๋ง ๋์๋ค. ์ด๋ป๊ฒ ์ ๋ ๊ฒ ๋ฐ๋ก๋ฐ๋ก ์ถ์ํ๋ ์ฝ๋๋ฅผ ๋๋ฑ ์์ฑํ์๋ ๊ฑฐ์ง..? ๋๋ ์ ๋ฐ ๊ณ ์๊ฐ ๋๊ณ ์ถ์ด์๐ฅน
๊ตต์งํ๊ฒ ๋ด๊ฐ ๋ญ ํ๊ฒ ๋ค ์ฃผ์์ผ๋ก ์ ๊ณ ๊ทธ ๋จ๊ณ๋ค์ ํจ์ํํ๋ ์ฐ์ต ๊พธ์คํ ํ๊ธฐ ๊ณ์ ์ผ์ชฝ ์ฒ๋ผ ์ง๊ณ ๋์ ์ต๊ด ๊ณ ์ณ์ง์ง ์์ผ๋ฉด ์์ฅ๋๊ป ๋ฐฐ์ฐ๋ ์๋ฏธ๊ฐ ์๋ค. ์ด๊ฒ๋งํผ์ ํ์คํ ๊ณ ์น๊ณ ๊ฐ์ ธ๊ฐ์.
// ์ ํ ๋ฃ๊ธฐ ๋ฒํผ(add), ์ ํ ๋นผ๊ธฐ ๋ฒํผ(minus) ํฉ์นจ
function addOption(event) {
const id = event.srcElement.id; // ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ id๋ฅผ ๊ฐ์ ธ์จ๋ค.
// 1. ์ ํํ ์์๋ฅผ ๊ฐ์ ธ์จ๋ค => id๊ฐ add๋ฉด ์ ํํ options๋ฅผ original์์ ๊ฐ์ ธ์ค๊ณ minus๋ฉด ์ ํํ options๋ฅผ moved์์ ๊ฐ์ ธ์จ๋ค.
const selectedOptions = id == 'add' ? Array.from(originalSports.selectedOptions) : Array.from(movedSports.selectedOptions);
// ์ ํํ ์์๊ฐ ์ด๋๋ select => id๊ฐ add๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ movedSports, id๊ฐ minus๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ originalSports
const toBeAdded = id == 'add' ? movedSports : originalSports;
// 2. ์ ํํ ์์๋ฅผ ์ด๋์ํจ๋ค.
for (let i = 0; i < selectedOptions.length; i++) {
toBeAdded.appendChild(selectedOptions[i]);
}
}
// ์ ์ฒด ๋ฃ๊ธฐ ๋ฒํผ(addAll), ์ ์ฒด ๋นผ๊ธฐ ๋ฒํผ(minusAll)ํฉ์นจ
function addAllOption(event) {
const id = event.srcElement.id; // ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์ id๋ฅผ ๊ฐ์ ธ์จ๋ค.
// 1. select์ ๋ชจ๋ option์ ๊ฐ์ ธ์จ๋ค. => id๊ฐ addAll์ด๋ฉด options๋ฅผ original์์ ๊ฐ์ ธ์ค๊ณ minusAll์ด๋ฉด moved์์ ๊ฐ์ ธ์จ๋ค.
const options = id == 'addAll' ? Array.from(originalSports.children) : Array.from(movedSports.children);
// ์์๊ฐ ์ด๋๋ select => id๊ฐ addAll๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ movdedSports, id๊ฐ minusAll์ด๋ฉด ์์ผ๋ก ์ถ๊ฐ๋ select๊ฐ originalSports
const toBeAdded = id == 'addAll' ? movedSports : originalSports;
// 2. option๋ค์ ์ด๋์ํจ๋ค.
for (let i = 0; i < options.length; i++) {
toBeAdded.appendChild(options[i]);
}
}
const leftSelect = document.getElementById('leftSelect'); // ์ผ์ชฝ select(์๋ณธ)
const rightSelect = document.getElementById('rightSelect'); // ์ค๋ฅธ์ชฝ select(์ด๋)
// ์ ํ๋ option์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค.
function moveSelectedLeftToRight() {
moveSelected(leftSelect, rightSelect);
}
// ์ ํ๋ option์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค.
function moveSelectedRightToLeft() {
moveSelected(rightSelect, leftSelect);
}
// ๋ชจ๋ option์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค.
function moveAllLeftToRight() {
moveAll(leftSelect, rightSelect);
}
// ๋ชจ๋ option์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธด๋ค.
function moveAllRightToLeft() {
moveAll(rightSelect, leftSelect);
}
// ๋ชจ๋ option์ ์ฎ๊ธด๋ค.
function moveAll(from, to) {
// 1. ๋ชจ๋ option์ ์ ํํ๋ค.
selectAll(from);
// 2. ์ ํ๋ option์ ์ฎ๊ธด๋ค.
moveSelected(from, to);
}
// ์ ํ๋ option์ from์์ to๋ก ์ฎ๊ธด๋ค.
function moveSelected(from, to) {
const selectedOptions = Array.from(from.selectedOptions);
for (let i = 0; selectedOptions.length; i++) {
to.appendChild(selectedOptions[i]);
}
}
// target์ ๋ชจ๋ option์ ์ ํํ๋ค.
function selectAll(target){
const options = target.children;
for (let i = 0; i < options.length; i++) {
options[i].selected = true;
}
}
๊ณผ์ 3 : ์นด๋ ๊ฒ์
show : ๋ชจ๋ ์นด๋ ๋ณด์ฌ์ฃผ๊ธฐ
hide : ๋ชจ๋ ์นด๋ ์จ๊ธฐ๊ธฐ
shuffle : ์นด๋ ์๊ธฐ
๋ ์ฅ์ ์นด๋๋ฅผ ๋ค์ง์์ ๋ ๊ฒ์ ์ฑ๊ณต. ์ผ์นํ์ง ์์ผ๋ฉด ๋ค์ ๋ค์ง์ด์ง๋ค.

์ ์ฒด ์ฝ๋
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> img { width: 120px; height: 180px; cursor: pointer; transition: transform 1s ease; } img:hover { transform: translateY(-30px); outline: black solid 1px; } </style> </head> <body> <button id="showBtn">show</button> <button id="hideBtn">hide</button> <button id="shuffleBtn">shuffle</button> <br><br> <div id="board"> <!-- ์นด๋๋ฅผ ๋ณด์ฌ์ค ๊ณณ --> </div> <script> let cardArr = new Array(52); window.onload = function () { // main ๋ฉ์๋ initGame(cardArr); // ๊ฒ์ ์ด๊ธฐํ // for (let i = 0; i < 10000000000; i++) { // } startGame(cardArr); // ๊ฒ์ ์์ } // show ๋ฒํผ์ ๋๋ฅด๋ฉด ์นด๋๋ฅผ ์ ๋ถ ๋ณด์ฌ์ค๋ค. document.getElementById('showBtn').onclick = function() { flipAll(cardArr, false); }; // hide ๋ฒํผ์ ๋๋ฅด๋ฉด ์นด๋๋ฅผ ์ ๋ถ ์จ๊ธด๋ค. document.getElementById('hideBtn').onclick = function() { flipAll(cardArr, true); }; document.getElementById('shuffleBtn').onclick = function() { initGame(cardArr); startGame(cardArr); }; const A = 1; const J = 12 const Q = 12; const K = 13; const DIAMOND = 1; const CLOVER = 2; const HEART = 3; const SPADE = 4; function Card(number, suit) { //TODO suit๋ number ์ง์ญ๋ณ์ํํ๊ธฐ this.number = number; this.suit = suit; this.isFront = true; } Card.prototype.toString = function() { let suit = ""; let number = ""; switch (this.suit) { case 1: suit = "โ"; break; case 2: suit = "โง"; break; case 3: suit = "โก"; break; case 4: suit = "โ "; break; default: } switch (this.number) { case 1: number = "A"; break; case 11: number = "J"; break; case 12: number = "Q"; break; case 13: number = "K"; break; default: number = this.number + ""; } return suit + number; } // ์นด๋์ ์์ด๋(number + "" + suit)๋ฅผ ๊ฐ์ ธ์จ๋ค. Card.prototype.getId = function() { return this.number + "" + this.suit; } // ๊ฒ์ ์ด๊ธฐํ function initGame() { // 1. card๋ฅผ ๋ด์ ๋ฐฐ์ด์ ๋ง๋ ๋ค. // 2. ๋ฐฐ์ด์ ์ด๊ธฐํํ๋ค. initCard(cardArr); // 3. ๋ฐฐ์ด์ ์๋๋ค. shuffleCard(cardArr); // 4. ์นด๋๋ฅผ div#board์ ๋ณด์ฌ์ค๋ค. showCard(cardArr); // 5. ๊ฐ ์นด๋์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๋ค. let imgArr = document.getElementsByTagName("img"); for (let i = 0; i < imgArr.length; i++) { imgArr[i].onclick = cardClick; } return cardArr; } function startGame(cardArr) { // ์นด๋ ์ ๋ถ๋ฅผ ๋ท๋ฉด ๋ณด์ฌ์ค๋ค. flipAll(cardArr, true); } // function printCardArr(cardArr) { // for (let i = 0; i < cardArr.length; i++) { // console.log(cardArr[i].toString()); // } // } // ์นด๋ ๋ฐฐ์ด์ ์ด๊ธฐํํ๋ค. function initCard(cardArr) { let suitChk = 1; let numberChk = 1; for (let i = 0; i < cardArr.length; i++) { cardArr[i] = new Card(numberChk++, suitChk++); if (suitChk > 4) suitChk = 1; // ๋ค์ด์๋ชฌ๋(โ) = 4 ๊ทธ๋ฆผ ์นด๋๊น์ง ๋ง๋ค์์ ๊ฒฝ์ฐ ๋ค์ ์คํ์ด๋(โ ) = 1 ์นด๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด 1๋ก ๋ณ๊ฒฝ if (numberChk > 13) numberChk = 1; // K(13)๊น์ง ์นด๋๋ฅผ ๋ง๋ค์์ ๊ฒฝ์ฐ ๋ค์ A(1)๋ฅผ ๋ฃ์ด์ฃผ๊ธฐ ์ํด 1๋ก ๋ณ๊ฒฝ } // ๊ธฐ๋ณธ ์ ๋ ฌ cardArr.sort(cardDefaultSortComparator); } // ์นด๋ ํด๋ฆญ ์ ๋ฐ์๋๋ ์ด๋ฒคํธ function cardClick() { // ์นด๋๋ฅผ ์ฐพ๋๋ค. const card = findCard(this); // 1. ์นด๋๊ฐ ์๋ฉด์ธ์ง ํ์ธํ๋ค. if (isFront(card)) // 1-1. ์๋ฉด์ด๋ฉด return return; // 1-2. ๋ท๋ฉด์ด๋ฉด ๋ค์ง๋๋ค. flip(card); // 2. ๋ค์งํ์๋ ์นด๋๊ฐ 2์ฅ์ธ๊ฐ? const chkTwoCards = checkFrontCardCountTwo(cardArr); if (chkTwoCards) { // 2-1. 2์ฅ์ด๋ผ๋ฉด ๋ ์นด๋์ ์ง์ด ์ผ์นํ๋์ง ์ฒดํฌํ๋ค. checkPair(chkTwoCards); } } // ๊ธฐ๋ณธ ์ ๋ ฌ - 1์์ suit 2์์ ์ซ์ function cardDefaultSortComparator(c, c2) { if (c.suit == c2.suit) { return c.number - c2.number; } else { return c.suit - c2.suit; } } // ์นด๋๋ฅผ ์๋๋ค. function shuffleCard(cardArr) { cardArr = cardArr.sort(() => Math.random() - 0.5); } // ์นด๋๋ฅผ div#board์ ๋ณด์ฌ์ค๋ค. function showCard(cardArr) { // ์ด๋ฏธ์ง ํ์ผ๋ช ๊ตฌํด์ค๋ ๊ณต์ = (number - 1) + (suit - 1) * 13 let c; let result = ""; // 1. ์นด๋์ ๊ฐ์๋งํผ ๋ฐ๋ณต๋ฌธ ๋๋ฆฐ๋ค. for (let i = 0; i < cardArr.length; i++) { // 2. ์นด๋ ๊ฐ์ฒด๋ฅผ ํ๋ ๊ฐ์ ธ์์ <img src="${(c.number - 1) + (c.suit - 1) *13}.png"> c = cardArr[i]; // 3. ์์ ๊ฒฐ๊ณผ๋ฅผ result ๋ฌธ์์ด์ ์ง์ด๋ฃ์ ๋ค // ์ฒ์์ ์นด๋ 10์ด๊ฐ ๋ณด์ฌ์ฃผ๊ณ gameStart()์์ hideํ์ result += `<img src="${(c.number - 1) + (c.suit - 1) *13}.png" id=${c.getId()} data-number="${c.number}" data-suit=${c.suit} data-isFront=true>`; // 12๊ฐ๊ฐ ํ์ค = ๋ง์ฝ i๊ฐ 12๋ผ๋ฉด brํ๊ทธ ๋ฃ์ด์ฃผ๊ธฐ if ((i + 1) % 13 == 0) { result+= `<br>`; } } // 4. div#board์ innerHTML๋ก ๋ฃ์ด์ค๋ค. document.getElementById('board').innerHTML = result; } // card๊ฐ ์๋ฉด์ด๋ฉด true ์๋๋ฉด false๋ฅผ ๋ฐํ // card๋ Card ๊ฐ์ฒด๊ฐ ๋ค์ด์์ผ ํ๋ค. function isFront(card) { return card.isFront; } // ์นด๋๋ฅผ ๋ค์ง๋๋ค. function flip(card, isFront) { // 1. ์นด๋๊ฐ ์๋ฉด์ธ์ง ํ์ธํ๋ค. if (isFront) { // 1-1. ์๋ฉด(๊ทธ๋ฆผ)์ด๋ฉด ๋ท๋ฉด(๋๋ด๊ณฐ)์ ๋ณด์ฌ์ค๋ค. showBack(card); } else { // 1-2. ๋ท๋ฉด(๋๋ด๊ณฐ)์ด๋ฉด ์๋ฉด(๊ทธ๋ฆผ์ ๋ณด์ฌ์ค๋ค.) showFront(card); } } // ์นด๋์ ์๋ฉด์ ๋ณด์ฌ์ค๋ค. function showFront(card) { let cardImg = document.getElementById(card.getId()); cardImg.src = `${(card.number - 1) + (card.suit - 1) *13}.png`; card.isFront = true; } // ์นด๋์ ๋ท๋ฉด(๋๋ด๊ณฐ)์ ๋ณด์ฌ์ค๋ค. function showBack(card) { let cardImg = document.getElementById(card.getId()); cardImg.src = 'bear.png'; card.isFront = false; } // ์นด๋๋ฅผ ๋ชจ๋ ๋ค์ง๋๋ค. function flipAll(cardArr, isFront) { // ์นด๋์ ์ด ๊ฐ์๋งํผ ๋ฐ๋ณต๋ฌธ ๋๋ฉด์ flip(card)๋ฅผ ํธ์ถ for (let i = 0; i < 52; i++) { flip(cardArr[i], isFront); } } // ๋ ์นด๋์ ์ง์ด ์ผ์นํ๋์ง ์ฒดํฌํ๋ค. function checkPair(twoCards) { // ์ง ์ผ์น ๊ธฐ์ค : ์ซ์ ๋์ผ, ์์ ๋์ผ if (twoCards[0].number == twoCards[1].number && Math.abs(twoCards[0].suit - twoCards[1].suit)) { // 2-2. ์ผ์นํ๋ฉด ๊ฒ์ ์ข ๋ฃ setTimeout(function() { alert("์ฑ๊ณต"); }, 500); } else { // 2-3. ์ผ์นํ์ง ์์ผ๋ฉด ํด๋ฆญํ๋ ์นด๋๋ค์ ๋ค์ ๋ค์ง๋๋ค. setTimeout(function() { alert("์คํจ"); // ์๋ ์ ์ ๋ค์ง์ด์ ธ;;;; flipAll(cardArr, true); }, 500); } } // ๋ค์งํ์๋ ์นด๋์ ๊ฐ์๊ฐ 2์ฅ์ธ์ง ์ฒดํฌํ๋ค. function checkFrontCardCountTwo(cardArr) { // cardArr์ length๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ card์ isFront๊ฐ true์ธ ์นด๋์ ๊ฐ์๊ฐ 2๊ฐ๋ฉด true๋ฅผ ๋ฐํํ๋ค. let card; let returnCards = []; for (let i = 0; i < cardArr.length; i++) { card = cardArr[i]; if (card.isFront) returnCards.push(card); } if (returnCards.length == 2) { return returnCards; } else { return false; } } // carImg ์๋ฆฌ๋จผํธ์์ cardArr์ค์ ์ผ์นํ๋ ์นด๋๋ฅผ ์ฐพ๋๋ค. function findCard(cardImg) { const number = parseInt(cardImg.getAttribute('data-number')); const suit = parseInt(cardImg.getAttribute('data-suit')); for (let i = 0; i < cardArr.length; i++) { let card = cardArr[i]; if (card.number == number && card.suit == suit) return card; } } // ๊ตฌ์กฐ ์ก์ ๋ ์ฝ๋ ์ ๋ ์ ๊ธฐ x // show๋ hide๋ ํํธ shupple์ ์๊ธฐ </script> </body> </html>
๊ณผ์ 2๋ฒ์์ ๋ฐฐ์ ๋ ๊ฒ ์ฒ๋ผ ๊ตต์งํ๊ฒ ๋ด๊ฐ ๋ญ ํ๊ฒ ๋ค ์ ์ฐจ๋ฅผ ๋จ๊ณ๋ณ๋ก ์ฃผ์์ผ๋ก ์ ๊ณ ๊ทธ๊ฑธ ๋ค ์ถ์ ๋ฉ์๋์ฒ๋ผ ์์ฑํ๋ค. ์ ์ฒด์ ์ธ ํ์ด ๋์ฌ ๋๊น์ง ๋ํ ์ผ์ ์ ์ด์ด์ผ๋ ๊ตฌํํ์ง ์์ผ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค.
๊ทธ๋ฆผ์ผ๋ก ๋น์ ๋ฅผ ํ๋ฉด ๋จผ์ ์ ์ฒด์ ์ธ ๋ฐ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ค์ ์ฑ์์ ํด์ผ ํ๋๋ฐ ๋๋ ์๋งํผ ๋ฐ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ก ์ฑ์ํ๊ณ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ํด์๋ ๊ฒ(๊ตฌํํ์ง ์ ์ ์ฃผ์ ๋จผ์ ์ ๊ธด ํ์์ง๋ง ๋จธ๋ฆฌ์์์ ๋์ค๋๋๋ก ์ผ๋จ ๋ค ์ ๊ณ ์์ ๋ถ๋ถ๋ถํฐ ์ธ์ธํ๊ฒ ๊ตฌํ์ ํ์๋ค).. ์ด๋ ๊ฒ ํ๋ฉด ๋ฐ๋ก ์ฑ์ํ๋ ๋ถ๋ถ์ด ์๋ชป๋๋ฉด ๋์ค์ ๊ณ ์น๊ธฐ ํ๋ค์ด์ง๋ค.
์ ์ฒด์ ์ธ ํ ๋ค ์ง๊ณ ์ด ํ์์ ํจ์๋ฅผ ์ฌ์ด ๊ฒ๋ถํฐ ํ๋ํ๋ ๊ตฌํํด๋๊ฐ๋๊น ์ด๊ฒ ์ด๋ ๊ฒ ์ฌ์ด ๊ฑฐ์๋?๋ผ๋ ์๊ฐ์ด ๋ค์ ๋์๋ค. ์๋ฃํ๊ณ ํผ๋๋ฐฑ ๋ฐ์์ ๋ ์ ์งฐ๋ค๊ณ ์นญ์ฐฌ๋ฐ์๋คโฆ.!!! ๋ ๊ธฐ๋ถ ์กฐ์
์ด๋ฒ ์ฃผ๋ ์ ๋ง ๋ง์ ๊ฒ์ ๋ฐฐ์ฐ๊ณ ๋๋ ํ ์ฃผ์๋ค
window.onload = function () { // main ๋ฉ์๋
initGame(); // ๊ฒ์ ์ด๊ธฐํ
startGame(); // ๊ฒ์ ์์
}
function initGame() {
// 1. card๋ฅผ ๋ด์ ๋ฐฐ์ด์ ๋ง๋ ๋ค.
let cardArr = [];
// 2. ๋ฐฐ์ด์ ์ด๊ธฐํํ๊ณ
initCard(cardArr);
// 3. ๋ฐฐ์ด์ ์๋๋ค.
shuffleCard(cardArr);
// 4. ์นด๋๋ฅผ div#board์ ๋ณด์ฌ์ค๋ค.
showCard(cardArr);
// 5. ๊ฐ ์นด๋์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๋ค.
let imgArr = document.getElementsByTagName("img");
for (let i = 0; i < imgArr.length; i++) {
imgArr[i].onclick = cardClick;
}
}
// card๊ฐ ์๋ฉด์ด๋ฉด true ์๋๋ฉด false๋ฅผ ๋ฐํ
function isFront(card) {
return false;
}
// ์นด๋๋ฅผ ๋ชจ๋ ๋ค์ง๋๋ค.
function flipAll(cardArr) {
// ์นด๋์ ์ด ๊ฐ์๋งํผ ๋ฐ๋ณต๋ฌธ ๋๋ฉด์ flip(card)๋ฅผ ํธ์ถ
flip(card[0]);
}
// ์นด๋๋ฅผ ๋ค์ง๋๋ค.
function flip(card) {
// 1. ์นด๋๊ฐ ์๋ฉด์ธ์ง ํ์ธํ๋ค.
if(isFront()) {
// 1-1. ์๋ฉด(๊ทธ๋ฆผ)์ด๋ฉด ๋ท๋ฉด(๋๋ด๊ณฐ)์ ๋ณด์ฌ์ค๋ค.
showBack(card);
} else {
// 1-2. ๋ท๋ฉด(๋๋ด๊ณฐ)์ด๋ฉด ์๋ฉด(๊ทธ๋ฆผ์ ๋ณด์ฌ์ค๋ค.)
showFront(card);
}
}
// ์นด๋๋ฅผ ํด๋ฆญํ์ ๋ ๋ฐ์๋๋ ์ด๋ฒคํธ
function cardClick(card) {
let card = this;
// 1. ์นด๋๋ฅผ ์๋ฉด์ธ์ง ํ์ธํ๋ค.
if (isFront(card))
// 1-1. ์๋ฉด์ด๋ฉด return
return;
// 1-2. ๋ท๋ฉด์ด๋ฉด ๋ค์ง๋๋ค.
flip(card);
// 2. ๋ค์งํ์๋ ์นด๋๊ฐ 2์ฅ์ธ๊ฐ?
if (checkCard()) {
// 2-1. 2์ฅ์ด๋ผ๋ฉด ๋ ์นด๋์ ์ง์ด ์ผ์นํ๋์ง ์ฒดํฌํ๋ค.
if (checkPair()) {
// 2-2. ์ผ์นํ๋ฉด ๊ฒ์ ์ข
๋ฃ
alert("์ฑ๊ณต")
} else {
// 2-3. ์ผ์นํ์ง ์์ผ๋ฉด ํด๋ฆญํ๋ ์นด๋๋ค์ ๋ค์ ๋ค์ง๋๋ค.
alert("์คํจ");
flipAll(cardArr);
}
}
}
CSS
CSS ์์ฑ
์ด๋ฆ | URL | ๋ ์ง | ์์ฑ ์ผ์ | ํ๊ทธ |
---|---|---|---|---|
margin๊ณผ padding์ ์ฐจ์ด | ์์ฑ | |||
float | ์์ฑ | |||
๋ณํ : transition | ์์ฑ | |||
๋ณํ : transform | ์์ฑ | |||
overflow ์์ฑ | ์์น์์ฑ | |||
position ์์ฑ | ์์น์์ฑ | |||
css ์ ํ์ | ์ ํ์ | |||
๊ตฌ์กฐ ์ ํ์ | ์ ํ์ | |||
๋ฌธ์ ์ ํ์ | ์ ํ์ | |||
display | ์์ฑ | |||
visibility | ์์ฑ | |||
border(ํ ๋๋ฆฌ) | ์์ฑ | |||
๋์ ์ ํ์ | ์ ํ์ | |||
@media ๊ท์น | ๋ฐ์ํ ์น | |||
๋ฐ์ํ ์น | ๋ฐ์ํ ์น | |||
Ch5. ์น ํ์ด์ง ๋ ์ด์์ | Ch5. ์น ํ์ด์ง ๋ ์ด์์ | |||
Ch.8 ์์ ์ปค๋จธ์ค ๋ฉ์ธ ํ์ด์ง | Ch5. ์น ํ์ด์ง ๋ ์ด์์ | |||
@import ๊ท์น | Ch11. CSS ์ถ๊ฐ ๊ท์น๊ณผ ๋ฐ์ํ ์น | |||
์ ๋ชฉ ์์ | Ch11. CSS ์ถ๊ฐ ๊ท์น๊ณผ ๋ฐ์ํ ์น | |||
์ํ๋ฌธ์ | ๊ธฐํ | |||
CSS ๋ ํผ๋ฐ์ค | https://www.w3schools.com/cssref/index.php | ๊ธฐํ |
w3schools - how to
์ด๋ฆ | ๋ถ๋ฅ | ๋ ์ง | URL |
---|---|---|---|
Tabs | [์] Menu(55) | https://www.w3schools.com/howto/howto_js_tabs.asp | |
Vertical Tabs | [์] Menu(55) | https://www.w3schools.com/howto/howto_js_vertical_tabs.asp | |
Tab Headers | [์] Menu(55) | https://www.w3schools.com/howto/howto_js_tab_header.asp | |
Full Page Tabs | [์] Menu(55) | https://www.w3schools.com/howto/howto_js_full_page_tabs.asp | |
Slideshow | [ํ] Images(39) | https://www.w3schools.com/howto/howto_js_slideshow.asp | |
Fullscreen Video | [ํ ] More(112) | https://www.w3schools.com/howto/howto_css_fullscreen_video.asp |
SQL(์ค๋ผํด) - ๋ถ์น์ ํ SQL ํ๋ก๊ทธ๋๋ฐ
์ด๋ป๊ฒ ๊ณต๋ถํ ๊ฒ์ธ๊ฐ
- ์ธ์ถ
- ๊ฐ๊ฒฉ ๋๊ธฐ
ex) ํ๋์ ์นด๋
์ฐ์ต์ด ์๊ฐ์๋ ๋ฐ๋ณต์ด ๋์ง ์์ ์ ๋์ ๊ฐ๊ฒฉ์ด๋ฉด ๋๋ค. but ๋๋ฌด ๋ง์ด ์์ด๋ฒ๋ ค์ ์๋ก ๋ฐฐ์ฐ๋ ์ ์ xx ์ฝ๊ฐ์ ๋ง๊ฐ์ด ์ค์. ์ ์ด๋ ํ๋ฃจ
- ๊ต์ฐจํ๊ธฐ
ํ ๊ฐ์ง ์ฐ์ต์ด ์์ ํ ๋๋๊ธฐ ์ ์ ์ฃผ์ ๋ฅผ ๋ฐ๊พธ์ด์ผ ํ๋ค. ๊ธฐ์ต์ ์ฝ๊ฐ ํ๋ ค์ง๊ฒ ํ๋ฉด ์ธ์ถ์ด ํ๋ค์ด์ง๊ณ ๋ฅ์ํ๊ฒ ๋ฐํํ์ง ๋ชปํ์ง๋ง, ํ ์ธต ๋ ๊น์ด ํ์ตํ๊ฒ ๋๊ณ ๋์ค์ ์์ํ๊ฒ ์ธ์ถํ ์ ์๊ฒ ๋๋ค. โ ์ด๋ก ์ ์ผ๋ก๋ ์๊ฒ ๋๋ฐ ๋ํํ ์ ์ฉํ๋ ๊ฒ ์ ์ ๋๋ค ใ
- ๋ณํ์ฃผ๊ธฐ
- ๋ฐ์ถ : ์ด๋ค ์ผ์ด ์ผ์ด๋ฌ๋๊ฐ? ๋ด๊ฐ ๋ฌด์์ ํ๋๊ฐ? ๊ทธ๊ฒ์ด ์ด๋ค ํจ๋ ฅ์ ๋ฐ์ทจํ๋๊ฐ? โ ํ๊ณ ๋ ๋น์ทํ๋ฏ
- ์ ๊ตํ : ์ด๋ฒ๊ณผ ๋ค๋ฅด๊ฒ ๋ค์์๋ ์ด๋ค ํ๋์ ํ ๊ฒ์ธ๊ฐ? โ ์ ์ฉ์ ์ฐพ๊ธฐ
๐ฏ
- ๋ค์ ์ฃผ๋ฉด ๋ฒ์จ ์คํ๋ง ๋ฐฐ์ฐ๊ณ ํ ๋ฌ ๋ค๋ฉด ํ๋ก์ ํธ๋ผ๋ ๋ง๋ ์๋ผ ์๊ฐ ์ง์ง ๋น ๋ฅด๋ค ๋ฒ์จ 2๋ฌ ์ง๋๊ณ ๋ด์ผ์ด๋ฉด 5๊ธฐ ๋ค์ด์จ๋ค๋ ๊ฒ๋ ์ ๋ฏฟ๊น..
๋์ค์ ์ด ์๊ธฐ๋ฅผ ๋์๋ดค์ ๋ ํํํ๋ ๊ธฐ์ต์ผ๋ก ๋จ์ง ์๋๋ก ๋งค์ผ๋งค์ผ ์ต์ ์ ๋คํ์ ํ์ดํ
- ์๋ ๋ฅด๊ธฐ ๋น์ผ? ์ง๊ธ ๋ ๊ฐ๋ ค์, ์ฌ์ฑ๊ธฐ, ์ฝง๋ฌผ ์ฌํด์ง์ง 3์ผ?๋ ๊ฒ๊ฐ์๋ฐ ์์ธ์ด ๋ญ์ง ๋์ฒดโฆโฆ ๋ฏธ์ณ๋ฒ๋ฆฌ๊ฒ ๋ค ์ฆ๋งโฆ ํ๊ธฐ์์ผฐ์ ๋ ์ท์ ๋ฏธ์ธ๋จผ์ง ๋ค ๋ฌป์ด์ ์ด๋ฌ๋ ๊ฑด๊ฐ ใ ์ผ๋จ ์ท ๋ค ๋นจ๋ํ๊ณ ์ด๋ถ ์ข ๋ฐ๊ฟ๋ฌ๋ผ ํ์ด์ง/
- ํญ์ ๊ฐ์กฐํ์๋ ๊ฒ : ๋๋ฉ์ธ, ์ ๋ฌด ์ง์์ด ์ ์ผ ์ค์ํ๋ค. ์ฝ๋๋ AI๊ฐ ํจ์ฌ ๋ ์ ์งฌ. ๊ทธ๊ฑธ ์ด์ฉํด ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ์ค๊ณ๋ฅผ ํ๋ ๊ฒ ๊ฐ๋ฐ์์ ๋ชซ ์ด๊ฑธ ํ๋ ค๋ฉด ์ ๋ฌด๋ฅผ ์ ์ดํดํ๊ณ ์์ด์ด์ผ ํ๋ค.
์ฐจ์ฃผ ๋ชฉํ
๊ตฌ๋ถ | ์ฐจ์ฃผ ๋ชฉํ |
---|---|
โ๏ธ์ง์ | 1. Java ๋ณต์ต ๋ชฉํ : 6, 7, 8, 10, 11์ฅ ๋ฐฑ์ง ๋ณต์ต(๋งค์ผ ํ ์ฑํฐ์ฉ) ์๊ฐ : ์์นจ ์ด๋ ์๊ฐ(7:20~7:50) - ๊ทธ๋ ๋ฐฑ์ง ๋ณต์ตํ๊ธฐ๋ก ํ ์ฑํฐ ์ด๋ํ ๋ ์์ฝ๋ณธ, ์๋ณด์นด๋ก ๋ณต์ต 2. CSS - 1์ผ 1w3schools(how to ๋ถ์ - ์ฃผ์๋ฌ๊ณ ํต์ฌ ์ ๋ฆฌํ๊ธฐ) ์ผ : Make a Website ์ : Hover Tabs ํ : Slideshow Gallery ์ : Alert Buttons ๋ชฉ : Login Form ๊ธ : Filter/Search List ํ : CSS/JS Modal |
๐งโโ๏ธ์์ | ๋งค์ผ ๋ ผ์ด ํ ๋ง๋ ์ฝ๊ธฐ(์ค์ 8์~8์ 10๋ถ) |
๐โโ๏ธ์ ์ฒด์ | ์ฃผ๋ง์ ํผ๋กค๋ฌ ์คํธ๋ ์นญ |
๋ค์์ฃผ๋ํ์ดํ !๐
๋ด์ฃผ๊ฑฐ
๊ตฌ๋ถ ๋ชฉํ์๊ฐ ์ฌ์ฉ์๊ฐ ๋ฌ์ฑ๋ฅ % ์์ธ๋ถ์ ๋ค์ ์ฃผ์ ์ ์ฉํ ๊ฒ ๐งโโ๏ธ์์ โ๏ธ์ง์ ์ฌํ์ ๐โโ๏ธ์ ์ฒด์ ๐์ ๐ฟ๊ธฐํ
Uploaded by N2T