๐จ JavaScript
[์ฝ๋ฉ์ ํ,mdn] js๋ก html ์์ฑํ๋ ๋ฒ (appendChild, createElement, insertAdjacentHTML ๋ฑ)
1. document.createElement() / appendChild() / clondeNode() / importNode() document.createElement() : html ์๋ฃ๋ฅผ ์์ฑํ๋ค. element.appendChild() : ํ ๋ ธ๋๋ฅผ ํน์ ๋ถ๋ชจ ๋ ธ๋์ ์์ ๋ ธ๋ ๋ฆฌ์คํธ ์ค ๋ง์ง๋ง ์์์ผ๋ก ๋ถ์ธ๋ค. (ํ ๋ ธ๋๋ ๋ฌธ์์์ ๋ ์ง์ ์ ๋์์ ์กด์ฌํ ์ ์์ผ๋ฏ๋ก, ๋ ธ๋๊ฐ ์ด๋ฏธ ๋ถ๋ชจ๊ฐ ์๋ค๋ฉด ์ญ์ ๋๊ณ ์๋ก์ด ์์น๋ก ์ด๋ํ๋ค.) * append()์์ ์ฐจ์ด์ : append๋ jquery์์ ์ง์ํ๋ ๋ฉ์๋๋ก, ์์ ์๋ฐ์คํฌ๋ฆฝํธ์ธ appendChild()์ ๋ค๋ฅด๋ค. ๋ํ append๋ .append(`๋ด์ฉ`) ์ฒ๋ผ ์์๋ฅผ ๋ฐ๋ก ๋๋ ค๋ฐ์ ์ ์๋ ๋ฐ๋ฉด, appendChild()๋ creat..
[์ฝ๋ฉ์ ํ] ์๋ฃํ : Array, Object (ํน์ง๊ณผ ์ฐจ์ด์ )
https://sunshineyellow.tistory.com/38 ์ด๊ฑฐ์ ์ด์ด์.. Array ์๋ฃํ let car = ['์๋ํ', 50000, 'white']; ์์๊ฐ๋ ์ด ์๋ค. -> ์ซ์์์ด๊ฐ๋๋ค์ ์ ๋ ฌ(sort)/x๋ฒ์๋ฃ๋ถํฐ x๋ฒ์๋ฃ๊น์ง ์๋ฅด๊ธฐ(slice)/x๋ฒ์๋ฃ ๋ฐ๊พธ๊ธฐ/๋งจ ๋ค, ๋งจ ์์ ์๋ฃ ๋ฃ๊ธฐ/์ํ๋ ์๋ฃ ๊ฒ์ํ๋ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ํ์ฉ์ด ๊ฐ๋ฅํ๋ค. Object ์๋ฃํ let car2 = { name : '์๋ํ', price : 50000 }; ์ ๋ชฉ(key)๊ฐ ๋ค์ด๊ฐ๋ค. ์์๊ฐ๋ ์ด ์๋ค. (์์ ์ผ๋ค๊ณ ๋งจ์ฒ์ ๋ฐ์ดํฐ๊ฐ ๋๋ ๊ฒ ์๋) -> key๋ง ๊ธฐ์ตํ๋ฉด ์๋ฃ ๋ฝ์ ๋ array๋ณด๋ค ์ฝ๋ค. object์์ ์๋ฃ ๋ฝ๋ ๋ฒ ๋๊ฐ์ง console.log(car2['name']); //์๋ํ ..
[์ฝ๋ฉ์ ํ,mdn ๋ฑ] ์ด๋ฒคํธ๋ฒ๋ธ๋ง๊ณผ ์ด๋ฒคํธ์บก์ณ๋ง ๋ฐ ๊ด๋ จ ์ ์ฉํ ํจ์๋ค
์ด๋ฒคํธ๊ฐ DOMํธ๋ฆฌ๋ฅผ ํ๊ณ ๋ฐ์ํ๋ ํ๋ฆ ์ด๋ฒคํธ๋ document์์ ์์ํด DOM ํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ event.target๊น์ง ๋ด๋ ค๊ฐ๋ค. ์ด๋ฒคํธ๋ ํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๋ฉด์ addEventListener(..., true)๋ก ํ ๋นํ ํธ๋ค๋ฌ๋ฅผ ๋์์ํต๋๋ค. addEventListener(..., true)์ true๋ {capture: true}์ ์ถ์ฝํ์ด๋ค. ์ดํ ํ๊น ์์์ ์ค์ ๋ ํธ๋ค๋ฌ๊ฐ ํธ์ถ๋๋ค. ์ดํ์ ์ด๋ฒคํธ๊ฐ event.target๋ถํฐ ์์ํด์ ๋ค์ ์ต์์ ๋ ธ๋๊น์ง ์ ๋ฌ๋๋ฉด์ ๊ฐ ์์์ on๋ก ํ ๋นํ ํธ๋ค๋ฌ์ addEventListener๋ก ํ ๋นํ ํธ๋ค๋ฌ๋ฅผ ๋์์ํจ๋ค. addEventListener๋ก ํ ๋นํ ํธ๋ค๋ฌ ์ค, ์ธ ๋ฒ์งธ ์ธ์๊ฐ ์๊ฑฐ๋ false, {capture: false}์ธ ํธ๋ค๋ฌ๋ง ํธ์ถ๋..
[์ค์] Level 2 : 14,15(์์ ๋ฐ ๊นจ๋ฌ์ ์ )_for, ๋ฒ๋ธ๋งํ์ฉ์ถ์ฝ๋ฒ์
14. ํญ ๋ง๋ค๊ธฐ let kcnt = 0; for (let i = 0; i < $('.tab-button').length; i++) { alert(kcnt++); $('.tab-button').eq(i).on('click', function () { $('.tab-button').removeClass('orange'); $('.tab-button').eq(i).addClass('orange'); $('.tab-content').removeClass('show'); $('.tab-content').eq(i).addClass('show'); }) } ๊นจ๋ฌ์ ์ for๋ฌธ์ ์๋ ์๋ฆฌ์ ๋ํด์ ์ดํด๊ฐ ์ ๊ฐ์ง ์์๋ค. i๊ฐ 0์ด๊ณ , 3๊น์ง i++๋ก ๋์๊ฐ๋ ๊ฑฐ๋ฉด i์๋ ์์๋๋ก 0,1,2 ๋ฐฐ์ ๋๋ ๊ฒ ์๋๊ฐ? ..
Level 2 : 6~13(์์ ๋ฐ ๊นจ๋ฌ์ ์ )_scroll
6. Carousel slider ๋ง๋ค๊ธฐ ์กฐ๊ฑด ๋ฒํธ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ์ด๋ฏธ์ง๋ก ์ด๋ํ ์ ์๋ค. $('.slide-1').on('click', function(){ $('.slide-container').css('transform', 'translateX(0)'); }) $('.slide-2').on('click', function(){ $('.slide-container').css('transform', 'translateX(-100vw)'); }) $('.slide-3').on('click', function(){ $('.slide-container').css('transform', 'translateX(-200vw)'); }) 7. Carousel slider ๋ง๋ค๊ธฐ 2 ์กฐ๊ฑด ์ด์ /๋ค์๋ฒํผ ๋ง๋ค๊ธฐ. ์ฒซ..
[์ฝ๋ฉ์ ํ] ์์์ ๋์ด์ ์์น๊ฐ ๊ตฌํ๊ธฐ (clientHeight, offsetHeight, scrollHeight, getBoundingClientRect())
clientHeight console.log(element.clientHeight); clientHeight๋ ํจ๋ฉ์ ํฌํจํ ์์์ ๋์ด๋ฅผ ๊ฐ์ ธ์จ๋ค. offsetHeight console.log(element.offsetHeight); clientHeight๋ ํจ๋ฉ, ํ ๋๋ฆฌ, ๊ฐ๋ก์คํฌ๋กค๋ฐ(์๋ ๊ฒฝ์ฐ)์ ํฌํจํ ์์์ ๋์ด๋ฅผ ๊ฐ์ ธ์จ๋ค. scrollHeight console.log(element.scrollHeight); scrollHeight๋ ํจ๋ฉ, overflow๋ก ์ธํด ํ๋ฉด์ ํ์๋์ง ์์ ์ปจํ ์ธ ์ ํฌํจํ ์์์ ๋์ด๋ฅผ ๊ฐ์ ธ์จ๋ค. getBoundingClientRect() console.log(element.getBoundingClientRect()); // ์ถ๋ ฅ๊ฒฐ๊ณผ { top: 134 y: 134 ..