<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>지혀니의 알쏭달쏭 지식</title>
    <link>https://ji-hyuning.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 1 Aug 2026 11:24:27 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>지얌이</managingEditor>
    <image>
      <title>지혀니의 알쏭달쏭 지식</title>
      <url>https://tistory1.daumcdn.net/tistory/6712866/attach/005f2817122e40348e3eac3b3cfefa27</url>
      <link>https://ji-hyuning.tistory.com</link>
    </image>
    <item>
      <title>[Javascript] 자바스크립트로 카운팅 해보기 / count 세어보기</title>
      <link>https://ji-hyuning.tistory.com/24</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxaSL2/btsCayd12Nj/WNk6zrfJbfBzKbfi4TNwTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxaSL2/btsCayd12Nj/WNk6zrfJbfBzKbfi4TNwTK/img.png&quot; data-alt=&quot;결과물&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxaSL2/btsCayd12Nj/WNk6zrfJbfBzKbfi4TNwTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxaSL2%2FbtsCayd12Nj%2FWNk6zrfJbfBzKbfi4TNwTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;967&quot; height=&quot;430&quot; data-origin-width=&quot;967&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;결과물&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사진은 멈춰있지만, 숫자를 정해놓은 단위로 올리는 방법이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HTML&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1702738440942&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;counting&quot;&amp;gt;
  &amp;lt;div class=&quot;cut-box&quot;&amp;gt;
    &amp;lt;p&amp;gt;개인정보유출&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;피해 재산&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;피해건수&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;cut-num&quot;&amp;gt;
    &amp;lt;p class=&quot;c1&quot;&amp;gt;1,557억원&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;c2&quot;&amp;gt;19,000만명&amp;lt;/p&amp;gt;
    &amp;lt;p class=&quot;c3&quot;&amp;gt;4,443건&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;CSS&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1702738471866&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.counting {display: flex; justify-content: center; align-items: center; height: 500px; background: green; font-size: 82px; color: #fff; }
.cut-num {margin-left: 50px;}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Javascript&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1702738496092&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function counting(name, max, step, unit){ //counting이라는 함수를 정의하고, 네 개의 매개 변수를 받겠다는 뜻이다.
//▲여기서 name은 count할 요소의 선택자, max는 최대값, step은 증가 단위, unit는 단위이다. (달러나.. 원 등등)
        let count = 0; // count라는 변수를 0으로 초기화하고, 이 변수는 숫자를 나타내며 증가할 값을 뜻한다.
        const element = document.querySelector(name); //메서드를 사용하여 전달될 name(요소)에 해당하는 HTML요소를 선택하고 이 것을 엘리먼트 상수에 저장한다.

        const interval = setInterval(function(){ //주기적으로 함수를 실행하는 것을 셋인터벌이라고 한다.
          if(count &amp;gt;= max){ //만약 COUNT가 MAX 이상이 되면 클리어인터벌을 호출하여 인터벌을 종료하고 함수를 종료할 것이라는 뜻
            clearInterval(interval);
            return false;
          }
          count += step; // COUNT에 STEP을 더하고, 엘리먼트의 innerHTML을 현지화된 숫자 형식으로 업데이트한다.
          element.innerHTML = new Intl.NumberFormat().format(count) + unit; //NumberFormat는 천 단위 구분 기호를 쉼표로 나타내주는 것이다. ex) 1000 -&amp;gt; 1,000 각 나라별로 숫자 형식에 맞게 표시해주는 함수임.
        },20); // 20ms초마다 실행되는 함수의 끝을 나타낸다. 
      }

//counting 함수를 호출하여 각각의 HTML 요소에 대해 숫자를 증가시키고 표시한다. 
counting('.c1', 5000, 100, '억원');
counting('.c2', 19000, 300, '만명');
counting('.c3', 4443, 100, '억원');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 설명은 자바스크립트 주석으로 달아놨으니 확인할 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript/Javascript</category>
      <category>format</category>
      <category>javascript</category>
      <category>setIntervar</category>
      <category>숫자세기</category>
      <category>숫자올리기</category>
      <category>자바스크립트</category>
      <category>카운팅</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/24</guid>
      <comments>https://ji-hyuning.tistory.com/24#entry24comment</comments>
      <pubDate>Sun, 17 Dec 2023 00:01:16 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] 슬라이드 배너 자바스크립트로 다뤄보기 (fadeIn, top, left..)</title>
      <link>https://ji-hyuning.tistory.com/23</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X8ZZW/btsBC2ooqou/qdzjCgnZyu4vOeid8XlJe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X8ZZW/btsBC2ooqou/qdzjCgnZyu4vOeid8XlJe0/img.png&quot; data-alt=&quot;출처: 웹스토리보이&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X8ZZW/btsBC2ooqou/qdzjCgnZyu4vOeid8XlJe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX8ZZW%2FbtsBC2ooqou%2FqdzjCgnZyu4vOeid8XlJe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1239&quot; height=&quot;341&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처: 웹스토리보이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. fadeIn/out 슬라이드 배너&lt;/h2&gt;
&lt;pre id=&quot;code_1702106379400&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//css
/* 슬라이더 */
.sliderWrap {position: relative;}
.sliderWrap &amp;gt; div {display: none;}
.sliderWrap &amp;gt; div:first-child {display: block;}
.sliderWrap &amp;gt; .slider {
    position: absolute;
    left: 0; top: 0;
}
.sliderWrap &amp;gt; .slider img {
    vertical-align: top;
}
.sliderWrap &amp;gt; .slider span {
    position: absolute; 
    left: 50%; top: 50%;
    transform: translate(-50%,-50%);
    background: rgba(0, 0, 0, 0.4); 
    color: #fff;
    padding: 10px;
}
/* 자바스크립트 */
.sliderWrap &amp;gt; div {display: block;}


--------------------------------------------------------


window.onload = function(){
    const slider = document.querySelectorAll(&quot;.slider&quot;); //모든 정해놓은 클래스 이미지를 변수에 저장
    slider.forEach(img =&amp;gt; img.style.opacity = &quot;0&quot;); //.slider에 대한 모든 것을 슬라이더를 반복할건데, 슬라이더를 모두 투명하게 만든다.
    slider[0].style.opacity='1'; // 슬라이더 맨 첫번째 이미지는 보여야 하니까 opacity 1로 값을 준다.
    
    let imgIndex = 0; //시작하는 이미지 숫자는 0부터 시작한다.
    setInterval(()=&amp;gt;{ //일정시간마다 반복 실행을 시켜줄건데 
      let nextIndex = (imgIndex +1) % slider.length;//다음 슬라이드를 가져오기 위해서 변수에 값을 넣어준다. 현재 이미지는 0이고 nextIndex=는 1이다. 이 것을 imgIndex에 다음값이 와야하니까 1을 더해주고 그 외 나머지인 %을 넣어주면 다음 슬라이드가 올 것이다. length는 배열의 크기이다. 
      
      // 그 다음 값에서 실행되야 하는것이
      
      slider[imgIndex].style.opacity='0'; //내가 가지고 있던 이미지는 opacity 안보이게 감춰주고
      slider[nextIndex].style.opacity='1'; // 다음이미지를 가져와야하니까 opacity를 보이게 해준다.
      slider.forEach(img=&amp;gt;img.style.transition = &quot;all 1s&quot;) //얘네가 변화를 줄건데 변화가 걸리는게 1초가 걸린다.
      
      imgIndex = nextIndex; //다음 번호를 현재 번호를 넣는다. 
    },3000)
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 왼쪽으로 이동하는 슬라이드(오른쪽도 가능)&lt;/h2&gt;
&lt;pre id=&quot;code_1702106487467&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 슬라이드 */
#slider {
    overflow: hidden;
}
.sliderWrap {display: flex;}
.sliderWrap &amp;gt; .slider {
    position: relative;
}
.sliderWrap &amp;gt; .slider img{
    vertical-align: top;
}
.sliderWrap &amp;gt; .slider span {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    background: rgba(0, 0, 0, 0.4);
    color: #fff;
    padding: 10px 20px;
}

------------------------------------------------
window.onload = function () {
            let cur = 0;
            const sliderWrap = document.querySelector(&quot;.sliderWrap&quot;); //전체 이미지
            const slider = document.querySelectorAll(&quot;.slider&quot;); // 각각의 이미지'
            const sliderClone = sliderWrap.firstElementChild.cloneNode(true);//첫번째 이미지 저장
            sliderWrap.appendChild(sliderClone) //복사한 이미지를 마지막에 추가
            
            setInterval(()=&amp;gt; {
                cur++; //현재 이미지를 증가
                sliderWrap.style.marginLeft = -cur * 100 + &quot;%&quot;; //이미지 이동
                sliderWrap.style.transition = &quot;all 0.6s&quot;; //이미지 애니메이셔ㅑㄴ

                if(cur == 3) {
                    setTimeout(()=&amp;gt; {
                        sliderWrap.style.transition = &quot;0s&quot;; //앤미메이션 정지
                        sliderWrap.style.marginLeft = &quot;0&quot;; // 이미지 위치 초기화
                        cur = 0;
                    },700)
                }

            },3000);
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 아래로 이동하는 슬라이드(위로도 가능)&lt;/h2&gt;
&lt;pre id=&quot;code_1702106572476&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 슬라이드 */
#slider {overflow: hidden;}
.sliderWrap .slider {position: relative;}
.sliderWrap .slider img {vertical-align: top;}
.sliderWrap .slider span {position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(0, 0, 0, 0.4); padding: 10px; color: #fff;}

------------------------------------------------------

   window.onload=function(){
    const sliderWrap = document.querySelector('.sliderWrap');//슬라이더를 감싸는 변수 저장
    const slider = document.querySelectorAll(&quot;.slider&quot;);//모든 슬라이더를 저장
    const sliderClone = sliderWrap.firstElementChild.cloneNode(true);//첫번째 슬라이드를 복제할거다.
    sliderWrap.appendChild(sliderClone);//마지막에 복제할거다. 붙여줄거다.
    
    let cur=0;
    setInterval(()=&amp;gt;{//아래 값을 반복적으로 할것이다. 
      cur++; //cur는 증가시킬것이고
      sliderWrap.style.transition = &quot;all 0.6s&quot;; //이동속도는 0.6초
      sliderWrap.style.marginTop = -cur * 300 + &quot;px&quot;; //위로 -300px으로 움직일것이다.

      if(cur == 3) {//만약 cur이 3이 된다면 (초기 슬라이드 갯수는 원래2)
        setTimeout(()=&amp;gt;{//맨 끝까지 도달한다면
          sliderWrap.style.transition = &quot;0s&quot;; // 즉 순간이동하는것처럼 보이기 위해 티가 안남 사실 0번째는 엄청빠르게 위로 올라간다.
          sliderWrap.style.marginTop = &quot;0&quot;; //위로 이동하는 것도 0
          cur = 0; //cur는 다시 초기값0부터 시작하게 0으로 바꿈
        },700) // 이미지 자연스럽게 바뀌게 0.7초 이 값은 위에 있는 transition보다 값이 커야함. 자연스러움을 위해
      }
    },3000)//전체 슬라이드 3초마다 반복되라
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 뚝뚝 끊기는 화면전환 슬라이드&amp;nbsp;&lt;/h2&gt;
&lt;pre id=&quot;code_1702106658964&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 슬라이드 */
#slider {}
.sliderWrap {position: relative; height: 100%;}
/* .sliderWrap &amp;gt; div {
    display: none;
}
.sliderWrap &amp;gt; div:first-child {
    display: block;
} */
.sliderWrap &amp;gt; .slider {
    position: absolute;
    left: 0; top: 0;
    width: 100%;
    height: 100%;
}
.sliderWrap &amp;gt; .slider.s1 {
    background: url(https://webstoryboy.github.io/webstoryboy/w_webd/slider/slider03.jpg) no-repeat center/cover;
}
.sliderWrap &amp;gt; .slider.s2 {
    background: url(https://webstoryboy.github.io/webstoryboy/w_webd/slider/slider04.jpg) no-repeat center/cover;
}
.sliderWrap &amp;gt; .slider.s3 {
    background: url(https://webstoryboy.github.io/webstoryboy/w_webd/slider/slider05.jpg) no-repeat center/cover;
}
.sliderWrap &amp;gt; .slider span {
    position: absolute;
    left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    padding: 10px;
    background: rgba(0, 0, 0, 0.4);
    color: #FFF;
}

---------------------------------------------------
window.onload = function () {
            let cur = 0; //현재이미지
            const slider = document.querySelectorAll(&quot;.slider&quot;); //각각의 이미지들
            slider.forEach(el =&amp;gt; el.style.opacity= &quot;0&quot;); //모든 이미지의 투명을 0
            slider[0].style.opacity = 1; //첫번째 이미지는 투명도를 1로 설정

            setInterval(()=&amp;gt; {
                let next = (cur + 1) % slider.length;

                slider[cur].style.opacity = &quot;0&quot;;
                slider[next].style.opacity = &quot;1&quot;;
                slider.forEach(el =&amp;gt; el.style.transition = &quot;all 0.1s&quot;);

                cur = next;
            },3000)
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 버튼 슬라이드&lt;/h2&gt;
&lt;pre id=&quot;code_1702204478513&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;window.onload=function(){
    const sliderWrap = document.querySelector('.sliderWrap');//슬라이더를 감싸는 변수 저장
    const slider = document.querySelectorAll(&quot;.slider&quot;);//모든 슬라이더를 저장
    const slider1Clone = sliderWrap.firstElementChild.cloneNode(true);//첫번째 슬라이드를 복제할거다.
    slider1Clone.classList.add('clone');//첫번째 슬라이드를 복제할거다.
    const prev = document.querySelector('.prev');
    const next = document.querySelector('.next');
    
    // 여기부터 시작
    const slider2Clone = sliderWrap.lastElementChild.cloneNode(true);//맨마지막 슬라이드를 복제할거다.
    slider2Clone.classList.add('clone');
    sliderWrap.appendChild(slider1Clone);//마지막에 복제할거다. 붙여줄거다.
    // prepend(내용물) =&amp;gt; append는 뒤에다 붙여주는건데 prepend는 앞에다 붙여주는것이다.
    sliderWrap.prepend(slider2Clone); // 복제한걸 앞에 붙여주겟다.
    sliderWrap.style.marginTop = -300 + &quot;px&quot;; // 복제했으니 첫번째 슬라이드를 보이기 위해 이동시켜줬다.
    

    // 원래의 slider 함수를 3개의 부분으로 분리하였다.
    // 1. cur++ 증감
    // 2. move(cur) 실질적으로 움직이게하는 파트
    // 3. setting() cur값이 우리가 생각하는 범위로 맞춰주고 margin?값도 지켜주는 역할
    
    let cur = 0; // 현재 번호값

    function move(cur){
      //아래 값을 반복적으로 할것이다.
      sliderWrap.style.transition = &quot;all 0.6s&quot;; //이동속도는 0.6초
      sliderWrap.style.marginTop = -(cur + 1) * 300 + &quot;px&quot;; //위로 -300px으로 움직일것이다.
    }

    function setting(){
      if(cur == 3) {
        // 맨~~~~끝에 도달하면 s1으로 이동하고 cur번호도 s1에 맞는 cur = 0 으로 바꾼다.
        setTimeout(()=&amp;gt;{//맨 끝까지 도달한다면
          sliderWrap.style.transition = &quot;0s&quot;; // 즉 순간이동하는것처럼 보이기 위해 티가 안남 사실 0번째는 엄청빠르게 위로 올라간다.
          sliderWrap.style.marginTop = &quot;-300px&quot;; //위로 이동하는 것도 0
          cur = 0; //cur는 다시 초기값0부터 시작하게 0으로 바꿈
        },700) // 이미지 자연스럽게 바뀌게 0.7초 이 값은 위에 있는 transition보다 값이 커야함. 자연스러움을 위해
      }
      if(cur == -1) {
        // 맨~~~~처음으로 도달하면 s3로 이동하고 cur번호도 s3에 맞는 cur = 2 로 바꾼다.
        setTimeout(()=&amp;gt;{
          sliderWrap.style.transition = &quot;0s&quot;; // 즉 순간이동하는것처럼 보이기 위해 티가 안남 사실 0번째는 엄청빠르게 위로 올라간다.
          sliderWrap.style.marginTop = &quot;-900px&quot;; //위로 이동하는 것도 0
          cur = 2; 
        },700) // 이미지 자연스럽게 바뀌게 0.7초 이 값은 위에 있는 transition보다 값이 커야함. 자연스러움을 위해
      }
    }

    // 새로운 함수 2개
    // 1. go는 앞으로 진행시키는것
    function go() {
      cur++;
      move(cur);
      setting();
    }
    // 2. back은 뒤로 진행시키는것
    function back() {
      cur--;
      move(cur);
      setting();
    }

    // setInterval에 go함수를 준 이유는 슬라이드가 앞으로만 진행되니까
    let interval = setInterval(go,3000);

    // next버튼을 누르면
    // 1. 기존 setInterval을 죽이고
    // 2. 바로 앞으로 진행 즉, go 실행
    // 3. 다시 인터벌 주기
    next.addEventListener('click',function(){
      clearInterval(interval);
      go();
      interval = setInterval(go,3000);
    })

    // next버튼을 누르면
    // 1. 기존 setInterval을 죽이고
    // 2. 바로 뒤로 진행 즉, back 실행
    // 3. 다시 인터벌 주기
    prev.addEventListener('click',function(){
      clearInterval(interval);
      back();
      interval = setInterval(go,3000);
    })
  }&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Javascript/Javascript</category>
      <category>javascript</category>
      <category>슬라이드배너</category>
      <category>웹디자인기능사</category>
      <category>자바스크립트 슬라이드</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/23</guid>
      <comments>https://ji-hyuning.tistory.com/23#entry23comment</comments>
      <pubDate>Sat, 9 Dec 2023 16:25:46 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] 자바스크립트로 드롭다운 메뉴 6종류 다뤄보기</title>
      <link>https://ji-hyuning.tistory.com/22</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 하위메뉴가 개별로 하나씩 내려오는 메뉴 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dispaly: none/block이 아닌, height 길이 사이즈를 안보이게/보이게 조절하여 만드는방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(ex: height: 0 / 마우스올리면 height: 155px이 되게)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BG6az/btsBJgx7OnZ/8KT3Jeg3E6av1xKBEgdJO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BG6az/btsBJgx7OnZ/8KT3Jeg3E6av1xKBEgdJO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BG6az/btsBJgx7OnZ/8KT3Jeg3E6av1xKBEgdJO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBG6az%2FbtsBJgx7OnZ%2F8KT3Jeg3E6av1xKBEgdJO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;846&quot; height=&quot;302&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1702105465311&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;style&amp;gt;
    * {
margin: 0;
padding: 0;
}
li {
    list-style: none;
}
a {
    text-decoration: none;
    color: #000;
}
#wrap {
    width: 1200px;
    margin: 0 auto;
}
#header {
    width: 100%;
    display: flex;
}
#header .logo {
    width: 20%;
    height: 100px;
    background-color: #efefef;
}
#header .nav {
    width: 80%;
    background-color: #e3e3e3;
}
#slider {
    width: 100%;
    height: 300px;
    background-color: #d9d9d9;
}
#contents {
    width: 100%;
    display: flex;
}
#contents .content1 {
    width: 33.3333%;
    height: 200px;
    background-color: #d1d1d1;
}
#contents .content2 {
    width: 33.3333%;
    height: 200px;
    background-color: #c7c7c7;
}
#contents .content3 {
    width: 33.3333%;
    height: 200px;
    background-color: #bcbcbc;
}
#footer {
    width: 100%;
    display: flex;
}
#footer .footer1 {
    width: 20%;
    height: 100px;
    background-color: #b1b1b1;
}
#footer .footer2 {
    width: 60%;
    height: 100px;
    background-color: #a3a3a3;
}
#footer .footer3 {
    width: 20%;
    height: 100px;
    background-color: #9d9d9d;
}

/* nav */
.nav {
    
}
.nav &amp;gt; ul {
    
    display: flex; 
    justify-content: right; 
    margin-top: 30px;
}
.nav &amp;gt; ul &amp;gt; li {position: relative;}
.nav &amp;gt; ul &amp;gt; li &amp;gt; a{
    display: inline-block;
    padding: 10px 50px;
    background: #686868;
    color: #fff;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; a:hover {
    background: #1b1b1b;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul {
    position: absolute;
    left: 0;
    top: 40px;
    background: #333;
    width: 100%;
    text-align: center;
    display: none;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li{
    
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li &amp;gt; a{
    display: inline-block;
    padding: 10px;
    background: #abb4b8;
    width: 100%;
    box-sizing: border-box;
    
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li &amp;gt; a:hover {
    background: #292929; color: #fff;
}
/*자ㅣ바*/
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul {
    display: block;
    height: 0;
    /*height: 160px;*/
    overflow: hidden;
    transition:all 600ms;
    
    
}

    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div id=&quot;wrap&quot;&amp;gt;
        &amp;lt;div id=&quot;header&quot;&amp;gt;
            &amp;lt;div class=&quot;logo&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;nav class=&quot;nav&quot;&amp;gt;
                &amp;lt;ul&amp;gt;
                    &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;메뉴1&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;메뉴2&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;메뉴3&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;메뉴4&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/nav&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //header --&amp;gt;

        &amp;lt;div id=&quot;slider&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //slider --&amp;gt;

        &amp;lt;div id=&quot;contents&quot;&amp;gt;
            &amp;lt;div class=&quot;content1&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;content2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;content3&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //contents --&amp;gt;

        &amp;lt;div id=&quot;footer&quot;&amp;gt;
            &amp;lt;div class=&quot;footer1&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer3&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //footer --&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;!-- //wrap --&amp;gt;

    
    &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script&amp;gt;
        window.onload = function (){
            let navList = document.querySelectorAll(&quot;.nav &amp;gt; ul &amp;gt; li&quot;);
            
            navList.forEach(function(navItem) {
                navItem.addEventListener(&quot;mouseover&quot;, function () {
                    this.querySelector(&quot;.submenu&quot;).style.height = &quot;155px&quot;;
                })
            });
            navList.forEach(function(navItem) {
                navItem.addEventListener(&quot;mouseout&quot;, function () {
                    this.querySelector(&quot;.submenu&quot;).style.height = &quot;0&quot;;
                })
            });
        }
    &amp;lt;/script&amp;gt;
    

&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 하위메뉴가 한번에 내려오는 메뉴 만들기&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1번메뉴와 똑같음 dispaly: none/block이 아닌, height 길이 사이즈를 안보이게/보이게 조절하여 만드는방식&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(ex: height: 0 / 마우스올리면 height: 155px이 되게)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;주의해야할 점은 하위메뉴 전체이므로 선택자를 잘 선택해야한다. 또한 forEach문도 알맞은 곳에 써야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOg5fr/btsBC3tZr6g/scXb0lrE3LEDsB2jiYyGKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOg5fr/btsBC3tZr6g/scXb0lrE3LEDsB2jiYyGKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOg5fr/btsBC3tZr6g/scXb0lrE3LEDsB2jiYyGKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOg5fr%2FbtsBC3tZr6g%2FscXb0lrE3LEDsB2jiYyGKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;699&quot; height=&quot;272&quot; data-origin-width=&quot;699&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1702105519103&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;style&amp;gt;
    * {
        margin: 0;
        padding: 0;
    }
    li {
        list-style: none;
    }
    a {
        text-decoration: none;
        color: #000;
    }
    #wrap {
        width: 1200px;
        margin: 0 auto;
    }
    #header {
        width: 100%;
        display: flex;
    }
    #header .logo {
        width: 20%;
        height: 100px;
        background-color: #efefef;
    }
    #header .nav {
        width: 80%;
        background-color: #e3e3e3;
    }
    #slider {
        width: 100%;
        height: 300px;
        background-color: #d9d9d9;
    }
    #contents {
        width: 100%;
        display: flex;
    }
    #contents .content1 {
        width: 33.3333%;
        height: 200px;
        background-color: #d1d1d1;
    }
    #contents .content2 {
        width: 33.3333%;
        height: 200px;
        background-color: #c7c7c7;
    }
    #contents .content3 {
        width: 33.3333%;
        height: 200px;
        background-color: #bcbcbc;
    }
    #footer {
        width: 100%;
        display: flex;
    }
    #footer .footer1 {
        width: 20%;
        height: 100px;
        background-color: #b1b1b1;
    }
    #footer .footer2 {
        width: 60%;
        height: 100px;
        background-color: #a3a3a3;
    }
    #footer .footer3 {
        width: 20%;
        height: 100px;
        background-color: #9d9d9d;
    }
    /* nav */
    .nav &amp;gt; ul {
        display: flex; 
        justify-content: right; 
        margin-top: 30px;
        
    }
    .nav &amp;gt; ul &amp;gt; li{position: relative;}
    .nav &amp;gt; ul &amp;gt; li &amp;gt; a {
        display: inline-block;
        padding: 10px 50px;
        background: #b0b0b0;
    }
    .nav &amp;gt; ul &amp;gt; li &amp;gt; a:hover {background: #696969;}
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul {
        /* display: none; */
        position: absolute;
        left: 0; top: 38px;
        width: 100%;
        text-align: center;
        display: none;
    }
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li {}
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li &amp;gt; a{
        display: inline-block;
        padding: 10px;
        background: #c1c1c1;
        width: 100%;
        
        box-sizing: border-box;
    }
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li &amp;gt; a:hover {background: #f8f8f8;}
    /* 자바스크립트 css */
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul {
        display: block;
        height: 0px;
        overflow: hidden;
        transition: all 600ms;
    }
    

    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;body&amp;gt;
        &amp;lt;div id=&quot;wrap&quot;&amp;gt;
            &amp;lt;div id=&quot;header&quot;&amp;gt;
                &amp;lt;div class=&quot;logo&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;nav class=&quot;nav&quot;&amp;gt;
                    &amp;lt;ul&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴1&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴2&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴3&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴4&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                    &amp;lt;/ul&amp;gt;
                &amp;lt;/nav&amp;gt;
                &amp;lt;/nav&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;!-- //header --&amp;gt;
    
            &amp;lt;div id=&quot;slider&quot;&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;!-- //slider --&amp;gt;
    
            &amp;lt;div id=&quot;contents&quot;&amp;gt;
                &amp;lt;div class=&quot;content1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;content2&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;content3&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;!-- //contents --&amp;gt;
    
            &amp;lt;div id=&quot;footer&quot;&amp;gt;
                &amp;lt;div class=&quot;footer1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;footer2&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;footer3&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;!-- //footer --&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //wrap --&amp;gt;
    &amp;lt;/body&amp;gt;

    &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script&amp;gt;
        window.onload = function() {
            let navList = document.querySelector(&quot;.nav &amp;gt; ul&quot;);

            navList.addEventListener(&quot;mouseover&quot;, function() {
                navList.querySelectorAll(&quot;.submenu&quot;).forEach(sub =&amp;gt; {
                    sub.style.height = &quot;155px&quot;
                });
            })
            navList.addEventListener(&quot;mouseout&quot;, function() {
                navList.querySelectorAll(&quot;.submenu&quot;).forEach(sub =&amp;gt; {
                    sub.style.height = &quot;0&quot;
                });
            })
        };
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 하위메뉴와 background 배경 함께 내려오게 하기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SVRYf/btsBDPvtTdh/MuSLXjTBRiLkvBku7BBAKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SVRYf/btsBDPvtTdh/MuSLXjTBRiLkvBku7BBAKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SVRYf/btsBDPvtTdh/MuSLXjTBRiLkvBku7BBAKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSVRYf%2FbtsBDPvtTdh%2FMuSLXjTBRiLkvBku7BBAKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1199&quot; height=&quot;268&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1702105587553&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;style&amp;gt;
    * {
    margin: 0;
    padding: 0;
}
li {
    list-style: none;
}
a {
    text-decoration: none;
    color: #000;
}
#wrap {
    width: 1200px;
    margin: 0 auto;
}
#header {
    width: 100%;
    display: flex;
}
#header .logo {
    width: 20%;
    height: 100px;
    background-color: #efefef;
}
#header .nav {
    width: 80%;
    background-color: #e3e3e3;
}
#slider {
    width: 100%;
    height: 300px;
    background-color: #d9d9d9;
}
#contents {
    width: 100%;
    display: flex;
}
#contents .content1 {
    width: 33.3333%;
    height: 200px;
    background-color: #d1d1d1;
}
#contents .content2 {
    width: 33.3333%;
    height: 200px;
    background-color: #c7c7c7;
}
#contents .content3 {
    width: 33.3333%;
    height: 200px;
    background-color: #bcbcbc;
}
#footer {
    width: 100%;
    display: flex;
}
#footer .footer1 {
    width: 20%;
    height: 100px;
    background-color: #b1b1b1;
}
#footer .footer2 {
    width: 60%;
    height: 100px;
    background-color: #a3a3a3;
}
#footer .footer3 {
    width: 20%;
    height: 100px;
    background-color: #9d9d9d;
}

/* nav */
#header {position: relative;}
#header::after {
    content: '';
    width: 100%;
    height: 0px;
    background: #b0b0b0;
    position: absolute;
    left: 0;
    top: 99px;
    z-index: 1;
}
#header.on::after {
    height: 155px;

}
.nav {
    z-index: 1000;
    transition: all 400ms;
}
.nav &amp;gt; ul {
    display: flex;
    justify-content: right;
    margin-top: 60px;
}
.nav &amp;gt; ul &amp;gt; li {position: relative;}
.nav &amp;gt; ul &amp;gt; li a{
    display: inline-block;
    padding: 10px 50px;
    background: #b0b0b0;
}
.nav &amp;gt; ul &amp;gt; li a:hover {background: #696969;}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul{
    display: none;
    position: absolute;
    left: 0; top: 38px;
    text-align: center;
    width: 100%;
    background: #c7c7c7;
}
.nav &amp;gt; ul &amp;gt; li  &amp;gt;ul &amp;gt; li &amp;gt; a{
    display: inline-block;
    padding: 10px;
    width: 100%;
    box-sizing: border-box;
}
.nav &amp;gt; ul &amp;gt; li  &amp;gt;ul &amp;gt; li &amp;gt; a:hover {background: #f8f8f8;}

&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div id=&quot;wrap&quot;&amp;gt;
        &amp;lt;div id=&quot;header&quot; class=&quot;on&quot;&amp;gt;
            &amp;lt;div class=&quot;logo&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;nav class=&quot;nav&quot;&amp;gt;
                &amp;lt;ul&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴1&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴2&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴3&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴4&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/nav&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //header --&amp;gt;

        &amp;lt;div id=&quot;slider&quot;&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //slider --&amp;gt;

        &amp;lt;div id=&quot;contents&quot;&amp;gt;
            &amp;lt;div class=&quot;content1&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;content2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;content3&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //contents --&amp;gt;

        &amp;lt;div id=&quot;footer&quot;&amp;gt;
            &amp;lt;div class=&quot;footer1&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer3&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;!-- //footer --&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;!-- //wrap --&amp;gt;
    &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script&amp;gt;
        window.onload = function(){
    let navList = document.querySelector(&quot;.nav &amp;gt; ul&quot;);

    navList.addEventListener(&quot;mouseover&quot;, () =&amp;gt; {
        navList.querySelectorAll(&quot;.submenu&quot;).forEach(sub =&amp;gt; {
            sub.style.height = &quot;155px&quot;;
        });
        document.getElementById(&quot;header&quot;).classList.add(&quot;on&quot;);
    });

    navList.addEventListener(&quot;mouseout&quot;, () =&amp;gt; {
        navList.querySelectorAll(&quot;.submenu&quot;).forEach(sub =&amp;gt; {
            sub.style.height = &quot;0px&quot;;
        });
        document.getElementById(&quot;header&quot;).classList.remove(&quot;on&quot;);
    });
}
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 사이드에 있는 메뉴 하나씩 down&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dze9Xr/btsBGWfQBT1/b4qKhzZxSz43zzRkZyyqo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dze9Xr/btsBGWfQBT1/b4qKhzZxSz43zzRkZyyqo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dze9Xr/btsBGWfQBT1/b4qKhzZxSz43zzRkZyyqo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdze9Xr%2FbtsBGWfQBT1%2Fb4qKhzZxSz43zzRkZyyqo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;599&quot; height=&quot;318&quot; data-origin-width=&quot;599&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1702105700235&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;style&amp;gt;
        * {
    margin: 0;
    padding: 0;
}
li {
    list-style: none;
}
a {
    text-decoration: none;
    color: #000;
}
#wrap {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
}
#aside {
    width: 200px;
}
#aside h1 {
    width: 100%;
    height: 100px;
    background-color: #efefef;
}
#aside nav {
    width: 100%;
    height: 700px;
    background-color: #e3e3e3;
}
#main {
    width: calc(100% - 200px);
}
#slider {
    width: 100%;
    height: 400px;
    background-color: #d9d9d9;
}
#link {
    width: 100%;
    height: 150px;
    background-color: #d1d1d1;
}
#contents {
    width: 100%;
    display: flex;
}
#contents .content1 {
    width: 50%;
    height: 250px;
    background-color: #c7c7c7;
}
#contents .content2 {
    width: 50%;
    height: 250px;
    background-color: #bcbcbc;
}
#footer {
    width: 100%;
    display: flex;
}
#footer .footer1 {
    width: 20%;
    height: 120px;
    background-color: #b1b1b1;
}
#footer .footer2 {
    width: 60%;
}
#footer .footer2 .footer2-1 {
    width: 100%;
    height: 60px;
    background-color: #a3a3a3;
}
#footer .footer2 .footer2-2 {
    width: 100%;
    height: 60px;
    background-color: #9d9d9d;
}
#footer .footer3 {
    width: 20%;
    height: 120px;
    background-color: #929292;
}

    /* nav */
    .nav &amp;gt;ul &amp;gt;li&amp;gt; a {
        display: block;
        padding: 10;
        background: #ccc;
        text-align: center;
    }
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul {display: none;}
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li &amp;gt; a{
        display: block;
        padding: 10px;
        text-align: center;
    }

    /* 자바용스크립트 */
    .nav &amp;gt; ul &amp;gt; li &amp;gt; ul {
        display: block;
        height: 0;
        overflow: hidden;
        transition: all 400ms;
    }

    &amp;lt;/style&amp;gt;

&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div id=&quot;wrap&quot;&amp;gt;
        &amp;lt;aside id=&quot;aside&quot;&amp;gt;
            &amp;lt;h1&amp;gt;&amp;lt;/h1&amp;gt;
            &amp;lt;nav class=&quot;nav&quot;&amp;gt;
                &amp;lt;ul&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴1&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴2&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴3&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴4&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/nav&amp;gt;
        &amp;lt;/aside&amp;gt;
        &amp;lt;!-- //aside --&amp;gt;

        &amp;lt;main id=&quot;main&quot;&amp;gt;
            &amp;lt;article id=&quot;slider&quot;&amp;gt;&amp;lt;/article&amp;gt;
            &amp;lt;article id=&quot;link&quot;&amp;gt;&amp;lt;/article&amp;gt;
            &amp;lt;section id=&quot;contents&quot;&amp;gt;
                &amp;lt;div class=&quot;content1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;content2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/section&amp;gt;
        &amp;lt;/main&amp;gt;
        &amp;lt;!-- //main --&amp;gt;

        &amp;lt;footer id=&quot;footer&quot;&amp;gt;
            &amp;lt;div class=&quot;footer1&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer2&quot;&amp;gt;
                &amp;lt;div class=&quot;footer2-1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;footer2-2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer3&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/footer&amp;gt;
        &amp;lt;!-- //footer --&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;!-- //wrap --&amp;gt;

    &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script&amp;gt;
        window.onload = function () {
            let navList = document.querySelectorAll(&quot;.nav &amp;gt; ul &amp;gt; li&quot;);

            navList.forEach(navItem=&amp;gt;{
                navItem.addEventListener(&quot;mouseover&quot;, function() {
                    this.querySelector(&quot;.submenu&quot;).style.height = '155px'
                })
                navItem.addEventListener(&quot;mouseout&quot;, function() {
                    this.querySelector(&quot;.submenu&quot;).style.height = '0'
                })
            });
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 사이드 메뉴 오른쪽으로 나타나게 하기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cawx7n/btsBC4zGI4W/EGOPcKKJD4sB60KK6h34w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cawx7n/btsBC4zGI4W/EGOPcKKJD4sB60KK6h34w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cawx7n/btsBC4zGI4W/EGOPcKKJD4sB60KK6h34w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcawx7n%2FbtsBC4zGI4W%2FEGOPcKKJD4sB60KK6h34w0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;222&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1702105790793&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;style&amp;gt;
        * {
    margin: 0;
    padding: 0;
}
li {
    list-style: none;
}
a {
    text-decoration: none;
    color: #000;
}
#wrap {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
}
#aside {
    width: 200px;
}
#aside h1 {
    width: 100%;
    height: 100px;
    background-color: #efefef;
}
#aside nav {
    width: 100%;
    height: 700px;
    background-color: #e3e3e3;
}
#main {
    width: calc(100% - 200px);
}
#slider {
    width: 100%;
    height: 400px;
    background-color: #d9d9d9;
}
#link {
    width: 100%;
    height: 150px;
    background-color: #d1d1d1;
}
#contents {
    width: 100%;
    display: flex;
}
#contents .content1 {
    width: 50%;
    height: 250px;
    background-color: #c7c7c7;
}
#contents .content2 {
    width: 50%;
    height: 250px;
    background-color: #bcbcbc;
}
#footer {
    width: 100%;
    display: flex;
}
#footer .footer1 {
    width: 20%;
    height: 120px;
    background-color: #b1b1b1;
}
#footer .footer2 {
    width: 60%;
}
#footer .footer2 .footer2-1 {
    width: 100%;
    height: 60px;
    background-color: #a3a3a3;
}
#footer .footer2 .footer2-2 {
    width: 100%;
    height: 60px;
    background-color: #9d9d9d;
}
#footer .footer3 {
    width: 20%;
    height: 120px;
    background-color: #929292;
}

/* nav */
.nav &amp;gt; ul &amp;gt; li{
    position: relative;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; a{
    display: block;
    padding: 10px;
    text-align: center;
    background: #ccc;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul {
    position: absolute;
    right: -200px;
    top: 0;
    width: 200px;
    background: #eee;
    display: none;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li &amp;gt; a{
    display: block;
    padding: 10px;
}
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div id=&quot;wrap&quot;&amp;gt;
        &amp;lt;aside id=&quot;aside&quot;&amp;gt;
            &amp;lt;h1&amp;gt;&amp;lt;/h1&amp;gt;
            &amp;lt;nav class=&quot;nav&quot;&amp;gt;
                &amp;lt;ul&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴1&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴2&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴3&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li&amp;gt;
                        &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴4&amp;lt;/a&amp;gt;
                        &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                        &amp;lt;/ul&amp;gt;
                    &amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/nav&amp;gt;
        &amp;lt;/aside&amp;gt;
        &amp;lt;!-- //aside --&amp;gt;

        &amp;lt;main id=&quot;main&quot;&amp;gt;
            &amp;lt;article id=&quot;slider&quot;&amp;gt;&amp;lt;/article&amp;gt;
            &amp;lt;article id=&quot;link&quot;&amp;gt;&amp;lt;/article&amp;gt;
            &amp;lt;section id=&quot;contents&quot;&amp;gt;
                &amp;lt;div class=&quot;content1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;content2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/section&amp;gt;
        &amp;lt;/main&amp;gt;
        &amp;lt;!-- //main --&amp;gt;

        &amp;lt;footer id=&quot;footer&quot;&amp;gt;
            &amp;lt;div class=&quot;footer1&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer2&quot;&amp;gt;
                &amp;lt;div class=&quot;footer2-1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;footer2-2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer3&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/footer&amp;gt;
        &amp;lt;!-- //footer --&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;!-- //wrap --&amp;gt;

    &amp;lt;script&amp;gt;
        window.onload = function(){
            let navList = document.querySelectorAll(&quot;.nav &amp;gt; ul &amp;gt; li&quot;);

            navList.forEach(function(nav){
                nav.querySelector(&quot;ul&quot;).style.display = &quot;block&quot;;
                nav.querySelector(&quot;ul&quot;).style.height = &quot;0&quot;;
                nav.querySelector(&quot;ul&quot;).style.overflow = &quot;hidden&quot;;
                nav.querySelector(&quot;ul&quot;).style.transition = &quot;height 400ms&quot;;
            })

            navList.forEach(function(navItem){
                navItem.addEventListener(&quot;mouseover&quot;, function() {
                    this.querySelector(&quot;.submenu&quot;).style.height = '155px';
                })
            })
            navList.forEach(function(navItem){
                navItem.addEventListener(&quot;mouseout&quot;, function() {
                    this.querySelector(&quot;.submenu&quot;).style.height = '0px';
                })
            })


        }
    &amp;lt;/script&amp;gt;

&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 사이드 메뉴 전체 background 배경과 한번에 나오게 하기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FTR0N/btsBDRz2e3n/DAUCqHHcS1iTv1QGIJLOjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FTR0N/btsBDRz2e3n/DAUCqHHcS1iTv1QGIJLOjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FTR0N/btsBDRz2e3n/DAUCqHHcS1iTv1QGIJLOjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFTR0N%2FbtsBDRz2e3n%2FDAUCqHHcS1iTv1QGIJLOjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1337&quot; height=&quot;293&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1702105836985&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;style&amp;gt;
        * {
    margin: 0;
    padding: 0;
}
li {
    list-style: none;
}
a {
    text-decoration: none;
    color: #000;
}
#wrap {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
}
#aside {
    width: 200px;
}
#aside h1 {
    width: 100%;
    height: 100px;
    background-color: #efefef;
}
#aside nav {
    width: 100%;
    height: 700px;
    background-color: #e3e3e3;
}
#main {
    width: calc(100% - 200px);
}
#slider {
    width: 100%;
    height: 400px;
    background-color: #d9d9d9;
}
#link {
    width: 100%;
    height: 150px;
    background-color: #d1d1d1;
}
#contents {
    width: 100%;
    display: flex;
}
#contents .content1 {
    width: 50%;
    height: 250px;
    background-color: #c7c7c7;
}
#contents .content2 {
    width: 50%;
    height: 250px;
    background-color: #bcbcbc;
}
#footer {
    width: 100%;
    display: flex;
}
#footer .footer1 {
    width: 20%;
    height: 120px;
    background-color: #b1b1b1;
}
#footer .footer2 {
    width: 60%;
}
#footer .footer2 .footer2-1 {
    width: 100%;
    height: 60px;
    background-color: #a3a3a3;
}
#footer .footer2 .footer2-2 {
    width: 100%;
    height: 60px;
    background-color: #9d9d9d;
}
#footer .footer3 {
    width: 20%;
    height: 120px;
    background-color: #929292;
}
/* nav */
.nav { position: relative;z-index: 1000;}
.nav &amp;gt; ul &amp;gt; li{position: relative;}
.nav &amp;gt; ul &amp;gt; li &amp;gt; a{
    padding: 10px;
    display: block;
    text-align: center;
    background: #ccc;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul{
    display: none;
    position: absolute;
    right: -500px;
    top: 0;
    width: 500px;
    background: #eee;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li{
    display: inline;
}
.nav &amp;gt; ul &amp;gt; li &amp;gt; ul &amp;gt; li &amp;gt; a{
    padding: 10px;
    display: inline-block;
}
#main{position: relative;}
#main:after {
    content: '';
    width: 0%;
    height: 193px;
    background: #111;
    position: absolute;
    left: 0; top: 100px;
    z-index: 10;
    transition: all 0.3s;


}
#main.on:after {
    width: 100%;
}

    &amp;lt;/style&amp;gt;
   
&amp;lt;body&amp;gt;
    &amp;lt;div id=&quot;wrap&quot;&amp;gt;
        &amp;lt;aside id=&quot;aside&quot;&amp;gt;
            &amp;lt;h1&amp;gt;&amp;lt;/h1&amp;gt;
            &amp;lt;nav&amp;gt;
                &amp;lt;nav class=&quot;nav&quot;&amp;gt;
                    &amp;lt;ul&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴1&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴1-4&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴2&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴2-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴3&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴3-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴4&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴4-3&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                        &amp;lt;li&amp;gt;
                            &amp;lt;a href=&quot;#&quot;&amp;gt;메뉴5&amp;lt;/a&amp;gt;
                            &amp;lt;ul class=&quot;submenu&quot;&amp;gt;
                                &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서브메뉴5-1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
                            &amp;lt;/ul&amp;gt;
                        &amp;lt;/li&amp;gt;
                    &amp;lt;/ul&amp;gt;
                &amp;lt;/nav&amp;gt;
            &amp;lt;/nav&amp;gt;
        &amp;lt;/aside&amp;gt;
        &amp;lt;!-- //aside --&amp;gt;

        &amp;lt;main id=&quot;main&quot;&amp;gt;
            &amp;lt;article id=&quot;slider&quot;&amp;gt;&amp;lt;/article&amp;gt;
            &amp;lt;article id=&quot;link&quot;&amp;gt;&amp;lt;/article&amp;gt;
            &amp;lt;section id=&quot;contents&quot;&amp;gt;
                &amp;lt;div class=&quot;content1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;content2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/section&amp;gt;
        &amp;lt;/main&amp;gt;
        &amp;lt;!-- //main --&amp;gt;

        &amp;lt;footer id=&quot;footer&quot;&amp;gt;
            &amp;lt;div class=&quot;footer1&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer2&quot;&amp;gt;
                &amp;lt;div class=&quot;footer2-1&quot;&amp;gt;&amp;lt;/div&amp;gt;
                &amp;lt;div class=&quot;footer2-2&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;footer3&quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;/footer&amp;gt;
        &amp;lt;!-- //footer --&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;!-- //wrap --&amp;gt;

    &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script&amp;gt;
        window.onload = function () {
            let navList = document.querySelector(&quot;.nav &amp;gt; ul&quot;);

            navList.addEventListener(&quot;mouseover&quot;, function() {
                navList.querySelectorAll(&quot;.submenu&quot;).forEach(sub =&amp;gt; {
                    sub.style.display = 'block';
                });
                document.getElementById(&quot;main&quot;).classList.add(&quot;on&quot;)
            })
            navList.addEventListener(&quot;mouseout&quot;, function() {
                navList.querySelectorAll(&quot;.submenu&quot;).forEach(sub =&amp;gt; {
                    sub.style.display = 'none';
                });
                document.getElementById(&quot;main&quot;).classList.remove(&quot;on&quot;)
            })
        }
        
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript/Javascript</category>
      <category>javascript</category>
      <category>NAV</category>
      <category>드롭다운</category>
      <category>아코디언메뉴</category>
      <category>웹디자인기능사</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/22</guid>
      <comments>https://ji-hyuning.tistory.com/22#entry22comment</comments>
      <pubDate>Sat, 9 Dec 2023 16:12:23 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] forEach/for..in/for..of/for 구문</title>
      <link>https://ji-hyuning.tistory.com/21</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;forEach함수의 구문&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배열의 반복이며, 배열에서만 사용할 수 있는 메서드이다. forEach()는 배열의 처음부터 마지막 요소까지 반복하여 실행하고 인자로 콜백함수를 받아온다. 주어진 콜백함수를 배열 요소 각각에 실행하는 순회방법이 있다. 하지만 forEach()함수는 보통 map()함수와 함께 가장 널리 사용되는 순회방법 중 하나이다.&lt;/p&gt;
&lt;pre id=&quot;code_1701831185409&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var arr = [&quot;1&quot;, &quot;2&quot;, &quot;3&quot;];

// ES6의 화살표 함수를 이용하면 코드를 아주 간결하게 만들 수 있습니다.(가장 자주 쓰는 형태)
arr.forEach(item =&amp;gt; {
	// item 변수는 배열 각각의 요소들을 순환합니다.
	console.log(item);
});

// forEach 함수의 원형 그대로 사용하기
arr.forEach(function(item, index, arr2) {
	// item : 배열 각각의 요소
	// index : 배열 인덱스
	// arr2 : 배열 자체(반복문 돌리는 배열을 통째로 참조해야할 경우 사용)
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;forEach예제)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML / CSS&lt;/p&gt;
&lt;pre id=&quot;code_1701872426683&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;style&amp;gt;
    * {padding: 0; margin: 0; box-sizing: border-box;}
    a {text-decoration: none; color: inherit;}
    li {list-style: none;}

    .gnb &amp;gt; ul {display: flex;}
    .gnb &amp;gt; ul &amp;gt; li {padding: 0 10px;}
    .gnb &amp;gt; ul &amp;gt; li a {display: inline-block; background: #ccc; border: 1px solid #333; padding: 10px 30px; margin-bottom: 10px;}
    .sub{display: none; transition: 0.3s;}
    .sub.on {display: block;}
  &amp;lt;/style&amp;gt;


&amp;lt;div class=&quot;wrap&quot;&amp;gt;
    &amp;lt;nav class=&quot;gnb&quot;&amp;gt;
      &amp;lt;ul&amp;gt;
        &amp;lt;li class=&quot;open&quot;&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;메뉴1&amp;lt;/a&amp;gt;
          &amp;lt;ul class=&quot;sub&quot;&amp;gt;
            &amp;lt;li class=&quot;slideMenu&quot;&amp;gt;메뉴1내용&amp;lt;/li&amp;gt;
            &amp;lt;div class=&quot;close&quot;&amp;gt;X&amp;lt;/div&amp;gt;
          &amp;lt;/ul&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;open&quot;&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;메뉴2&amp;lt;/a&amp;gt;
          &amp;lt;ul class=&quot;sub&quot;&amp;gt;
            &amp;lt;li class=&quot;slideMenu&quot; &amp;gt;메뉴2내용&amp;lt;/li&amp;gt;
            &amp;lt;div class=&quot;close&quot;&amp;gt;X&amp;lt;/div&amp;gt;
          &amp;lt;/ul&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;open&quot;&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;메뉴3&amp;lt;/a&amp;gt;
          &amp;lt;ul class=&quot;sub&quot;&amp;gt;
            &amp;lt;li class=&quot;slideMenu&quot;&amp;gt;메뉴3내용&amp;lt;/li&amp;gt;
            &amp;lt;div class=&quot;close&quot;&amp;gt;X&amp;lt;/div&amp;gt;
          &amp;lt;/ul&amp;gt;
        &amp;lt;/li&amp;gt;
      &amp;lt;/ul&amp;gt;
    &amp;lt;/nav&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1701869739056&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;window.onload = function() {
  const Gnb = document.querySelectorAll(&quot;.gnb&amp;gt;ul&amp;gt;li&quot;);
  console.log(Gnb);
  Gnb.forEach((item)=&amp;gt;{
    console.log(item);
    const open = item.querySelector('.open&amp;gt;a');
    const sub = item.querySelector('.sub');
    const close = item.querySelector('.close');

    open.addEventListener('click', () =&amp;gt; {
      sub.classList.toggle('on'); //open이라는 클래스를 눌러서 안에 콘텐츠sub를 없앨 수 있음
    });
  
    close.addEventListener('click', () =&amp;gt; {
      sub.classList.toggle('on'); // //열린 콘텐츠sub클래스를 눌러서 안에 콘텐츠sub를 사라지게 할 수 있음
      });
  });
};&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLeBGe/btsBxfNUEgT/f13BWAmVSGLkCkOOpbhpZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLeBGe/btsBxfNUEgT/f13BWAmVSGLkCkOOpbhpZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLeBGe/btsBxfNUEgT/f13BWAmVSGLkCkOOpbhpZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLeBGe%2FbtsBxfNUEgT%2Ff13BWAmVSGLkCkOOpbhpZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;334&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;for..in함수의 구문&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for..in문은 객체의 속성을 반복하기 위해 열거형과 함께 사용되며 ES6에 도입되었다.&lt;/p&gt;
&lt;pre id=&quot;code_1701846442068&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var arr = [&quot;1&quot;, &quot;2&quot;, &quot;3&quot;];
for (var item in arr) {
	// item : 배열 각각의 요소
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;for함수의 구문&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1701846467040&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var arr = [&quot;1&quot;, &quot;2&quot;, &quot;3&quot;];
for (var i = 0; i &amp;lt; arr.length; ++i) {
	// index를 지정하는 전통적인 for문
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;for..of함수의 구문&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for..of문 또한 ES6에 도입되었으며, 반복 가능한 객체만 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복 가능한 객체 목록 - 배열 / 문자열 / Set 객체 / map객체 / NodeList&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복적이지 않은 요소를 넣을 경우, TypeError가 발생함&lt;/p&gt;
&lt;pre id=&quot;code_1701846496538&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let arr = [10, 20, 30];
for (let item of arr) {
	// item: 배열 각각의 요소
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;forEach로 예제 풀어보기&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 배열 요소 출력하기&lt;/p&gt;
&lt;pre id=&quot;code_1701840859922&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1,2,3,4,5];

numbers.forEach(function(number){
	console.log(number);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtF2vK/btsBueV86jm/k86so55OGiKgomrkIkm5KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtF2vK/btsBueV86jm/k86so55OGiKgomrkIkm5KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtF2vK/btsBueV86jm/k86so55OGiKgomrkIkm5KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtF2vK%2FbtsBueV86jm%2Fk86so55OGiKgomrkIkm5KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;794&quot; height=&quot;191&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 배열 요소를 합산하기&lt;/p&gt;
&lt;pre id=&quot;code_1701840969526&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [1,2,3,4,5];
    let sum = 0;
    numbers.forEach(function(number){
      sum += number;
    });
    console.log(sum)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;84&quot; data-origin-height=&quot;61&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1rxNg/btsBtIwrCYO/0NwiVDTffHWtVKFJG7liQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1rxNg/btsBtIwrCYO/0NwiVDTffHWtVKFJG7liQ1/img.png&quot; data-alt=&quot;1+2+3+4+5&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1rxNg/btsBtIwrCYO/0NwiVDTffHWtVKFJG7liQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1rxNg%2FbtsBtIwrCYO%2F0NwiVDTffHWtVKFJG7liQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;84&quot; height=&quot;61&quot; data-origin-width=&quot;84&quot; data-origin-height=&quot;61&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1+2+3+4+5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 특정 조건을 만족하는 배열 요소&lt;/p&gt;
&lt;pre id=&quot;code_1701846143280&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const numbers = [10, 25, 30, 45];

let foundNumber = null;

numbers.forEach(function(number) {
    if (number &amp;gt; 30) {
        foundNumber = number;
    }
});

console.log(foundNumber); // 출력: 45&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 배열 요소들을 문자열로 변환하여 새로운 배열 생성&lt;/p&gt;
&lt;pre id=&quot;code_1701846161989&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const names = ['Alice', 'Bob', 'Charlie'];
const greetings = [];

names.forEach(function(name) {
    greetings.push(`Hello, ${name}!`);
});

console.log(greetings); // 출력: ['Hello, Alice!', 'Hello, Bob!', 'Hello, Charlie!']&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5) 배열 요소들의 특정 속성을 변경하기&lt;/p&gt;
&lt;pre id=&quot;code_1701846185165&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const people = [
    {name: 'Alice', age: 30},
    {name: 'Bob', age: 25},
    {name: 'Charlie', age: 35}
];

people.forEach(function(person) {
    person.age += 5; // 모든 사람의 나이를 5살씩 증가시킴
});

console.log(people);
/* 출력:
    [
        {name: 'Alice', age: 35},
        {name: 'Bob', age: 30},
        {name: 'Charlie', age: 40}
    ]
*/&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;for, forEach의 차이점&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-동기와 비동기 : for문은 동기방식이기 때문에 오류가 생기면 위치 이후의 작업이 동작하지 않고 멈춘다. 반면 forEach문은 비동기 방식이기 때문에 멈추지 않고 동작함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-성능차이 : forEach문은 향상된 for문이라고 칭하며, 가변적인 배열이나 리스트 크기를 구할 필요가 없어 복잡한 반복문에 적합하고, 인덱스를 생성하는 for문보다 속도가 빠르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-forEach의 단점 : 반복문 내에서 배열이나 리스트 값을 수정/추가가 불가능하며 읽기 전용으로 불러오기 때문에 데이터 수정이 불가능하다. 또한 배열을 역순으로 탐색할 수 없고 순서대로 정보를 가져오기 때문에 역순으로 가져올 방법이 없다는 단점이 있다.&lt;/p&gt;</description>
      <category>Javascript/Javascript</category>
      <category>For</category>
      <category>for..in</category>
      <category>for..of</category>
      <category>foreach</category>
      <category>동기</category>
      <category>비동기</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/21</guid>
      <comments>https://ji-hyuning.tistory.com/21#entry21comment</comments>
      <pubDate>Wed, 6 Dec 2023 14:32:30 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] 코딩 기본 용어 정리(property/array...framework..)</title>
      <link>https://ji-hyuning.tistory.com/20</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기본 용어 정리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로퍼티(property)&lt;span&gt;&amp;nbsp;&lt;/span&gt;프로퍼티란&lt;/b&gt; 속성이란 뜻으로 자바스크립트에서 객체 내부의 속성을 의미한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;객체는&lt;span&gt;&amp;nbsp;&lt;/span&gt;프로퍼티로 구성된다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;key(키)&quot; : &quot;value(값)&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;의 형식으로 객체 안의 콤마(,)로 구분되어 할당된다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;key(키)는&lt;/b&gt; 속성명이라 생각해도 된다. 문자열만 가능하며, 문자열이지만 따옴표가 필요없다&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;반면 띄어쓰기를 할 경우는 필요하다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;value(값)&lt;/b&gt;는 속성값이라고 부르며, 어떤 값이든지 상관없다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;객체에서 함수를 정의할 경우, 속성값이라 하지않고&lt;span&gt;&amp;nbsp;&lt;/span&gt;Method(메소드)라고 부른다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배열(array)&lt;span&gt;&amp;nbsp;&lt;/span&gt;이란?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;자바스크립트에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;배열(array)은 이름과 인덱스로 참조되는 정렬된 값의 집합으로 정의된다.&lt;br /&gt;배열을 구성하는 각각의 값을&lt;span&gt;&amp;nbsp;&lt;/span&gt;배열 요소(element)라고 하며, 배열에서의 위치를 가르키는 숫자를&lt;span&gt;&amp;nbsp;&lt;/span&gt;인덱스(index)라고 한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;객체(object)&lt;span&gt;&amp;nbsp;&lt;/span&gt;란?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;객체란 실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;객체의-예&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;객체의 예&lt;/p&gt;
&lt;pre class=&quot;haml&quot; style=&quot;color: #000000; text-align: left;&quot;&gt;&lt;code&gt;-고양이

프로퍼티 (property)
키 / 벨류
-cat.name = &quot;나비&quot;
-cat.family = &quot;코리안 숏 헤어&quot;
-cat.age = 3
-cat.weight = 300

메소드(method)
- cat.mew()
- cat.eat()
- cat.sleep()
- cat.play()&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프레임 워크란?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이미 짜여진 환경에서 맞춰서 코딩하는 것 뷰, 리엑트 등 요즘 트랜디한 프레임워크가 다양하다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;라이브러리란?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;내가 쓰고 싶을때 가져다 쓰는 제품이라고 생각하면 편하다. 프레임 워크 처럼 맞춰서 작업할 필요 없고 내가 쓰고 싶을때 가져다 쓰는 용도이다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;디버그&lt;span&gt;&amp;nbsp;&lt;/span&gt;디버깅이란&lt;/b&gt; 소프트웨어에서 발생하는 문제의 원인을 찾아 해결하는 과정을 의미한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;컴파일&lt;span&gt;&amp;nbsp;&lt;/span&gt;우리가 코딩할 때 사용하는 프로그래밍 언어들은 사람이 보기 쉽게 만들어진 언어이다. 원래 컴퓨터는 0과 1밖엔 이해하지 못하는데 이것을 &lt;u&gt;사람이 알아보기 쉽게 만들고 그 후 컴퓨터와 소통하기 위해 번역하는 것을 컴파일&lt;/u&gt;이라고한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인터프리터&lt;/b&gt;컴파일러 언어와는 달리, 파이썬이나 루비, 자바스크립트 등의 언어들은 번역작업을 미리 해놓지 않고, 실행될 때마다&lt;span&gt;&amp;nbsp;&lt;/span&gt;인터프리터란 프로그램이 컴퓨터에게 코드를 기계어로 번역해주며 이러한 언어들을&lt;span&gt;&amp;nbsp;&lt;/span&gt;인터프리터 언어라고 한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;빌드&lt;/b&gt;프로그램 코드들은 보통 한 파일이 아니라 수십 수백개가 넘는 파일들에 걸처 작성이된다.&lt;br /&gt;이를 완성하여 소프트웨어로 배포하려면 이들을 특정 형태로 압축하거나 변경해야 하는데 이 과정을&lt;span&gt;&amp;nbsp;&lt;/span&gt;빌드&lt;span&gt;&amp;nbsp;&lt;/span&gt;라고 한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이때 컴파일러 언어는 당연히&lt;span&gt;&amp;nbsp;&lt;/span&gt;빌드에 컴파일 과정이 포함이된다.&lt;/p&gt;</description>
      <category>Javascript/Javascript</category>
      <category>개발자</category>
      <category>기본용어</category>
      <category>용어</category>
      <category>코딩</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/20</guid>
      <comments>https://ji-hyuning.tistory.com/20#entry20comment</comments>
      <pubDate>Mon, 4 Dec 2023 22:49:15 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] addEventListener 사용법과 이벤트(Event) 종류 / onClick의 차이</title>
      <link>https://ji-hyuning.tistory.com/19</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;addEventListener()이란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자와 상호 작용을 하면서 마우스(키보드/터치/펜) 등을 조작하면 그에 대한 반응을 하는 것이며, 특정 이벤트가 발생 되었을 때 특정 함수를 실행할 수 있게 해주는 것이다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자바스크립트 이벤트 3가지 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp; HTML 요소의 속성으로 등록 - 이벤트를 하나밖에 지정할 수 없다는 단점이 있다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;&amp;lt;input type=button onClick=&quot;btnClick()&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;2. DOM 요소의 프로퍼티로 등록 - 이벤트를 하나밖에 지정할 수 없다는 단점이 있다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;let btn = document.getElementByID(&quot;button&quot;); btn.onClick = btnClick();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;3. addEventListener 사용하여 등록 - 여러 개의 이벤트 등록이 가능하다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;const title = document.querySelector(&quot;h1&quot;); 
 
title.addEventListener(&quot;이벤트종류&quot;, 함수이름){
	this.classList.style.dispaly: &quot;block&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;많이 사용하는 이벤트 속성&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 347px;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt;mouseover&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt;객체 영역에 마우스 커서가 진입하는 순&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; mouseout &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 객체의&amp;nbsp;영역&amp;nbsp;위에&amp;nbsp;마우스&amp;nbsp;커서가&amp;nbsp;빠져나가는&amp;nbsp;순간 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; mousedown &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 객체의&amp;nbsp;영역&amp;nbsp;위에서&amp;nbsp;마우스&amp;nbsp;버튼을&amp;nbsp;누르는&amp;nbsp;순간 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; mouseup &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 객체의&amp;nbsp;영역&amp;nbsp;위에서&amp;nbsp;마우스&amp;nbsp;버튼을&amp;nbsp;떼는&amp;nbsp;순간 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; mousemove &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 객체의&amp;nbsp;영역&amp;nbsp;위에서&amp;nbsp;마우스&amp;nbsp;커서가&amp;nbsp;움직이는&amp;nbsp;순간 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; keydown &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 키를&amp;nbsp;눌렀을&amp;nbsp;때&amp;nbsp;발생 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; keyup &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 키를&amp;nbsp;뗐을&amp;nbsp;때&amp;nbsp;발생 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; keypress &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 키를 눌렀을 때 발생&amp;nbsp;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; click &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;&lt;span style=&quot;color: #2c3e50;&quot;&gt;&lt;b&gt;마우스 버튼을 클릭하고 버튼에서 손가락을 떼면 발생&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; resize&lt;/b&gt;&lt;span style=&quot;color: #2c3e50;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;span style=&quot;color: #2c3e50;&quot;&gt;&lt;b&gt;브라우저 창의 크기를 조절할때 발생한다.&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 40px;&quot;&gt;&lt;b&gt; scroll&lt;/b&gt;&lt;span style=&quot;color: #2c3e50;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 40px;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;span style=&quot;color: #2c3e50;&quot;&gt;&lt;b&gt;스크롤바를 드래그하거나 키보드(up, down)를 사용하거나 마우스 휠을 사용해서 웹페이지를 스크롤 할 때 발생&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; change &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; 변동이 있을 때 발생 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; focus &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; 포커스를 얻었을 때 발생 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; select &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; option 태그 등에서 선택을 했을 때 발생 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; submit &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;b&gt; submit 실행 시 발생 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; unload &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;color: #2c3e50;&quot;&gt;&lt;b&gt;링크를 클릭해서 다른 페이지로 이동하거나 브라우저 탭을 닫을 때 혹은 브라우저 창을 닫을 때 이벤트가 발생한다.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; load &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;b&gt; 로드가 완료 되었을 때 발생 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;출처: https://lakelouise.tistory.com/35&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;onClick()과의 차이&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;onClick()으로 해도 되지않을까? 하는 사람들이 있을 것이다. onClick()은 하나의 이벤트만 실행할 수 있다.&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;예제 )&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;&amp;lt;button class=&quot;event&quot;&amp;gt;
버튼
&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;css&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;let click = document.querySelector('.event');

click.onclick = function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log('onclick1');
}
click.onclick = function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log('onclick2');
}
click.addEventListener('click', function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log('addEventListener1');
})
click.addEventListener('click', function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log('addEventListener2');
})
click.addEventListener('click', function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log('addEventListener3');
})

// onclick은 두개, addEventListener는 세개를 등록했다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;출처: https://sunjin-kim.tistory.com/41&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;195&quot; data-origin-height=&quot;103&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6ra3d/btsBqA5doob/BkjYHW6ifLDPm53HmEx04K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6ra3d/btsBqA5doob/BkjYHW6ifLDPm53HmEx04K/img.png&quot; data-alt=&quot;결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6ra3d/btsBqA5doob/BkjYHW6ifLDPm53HmEx04K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6ra3d%2FbtsBqA5doob%2FBkjYHW6ifLDPm53HmEx04K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;195&quot; height=&quot;103&quot; data-origin-width=&quot;195&quot; data-origin-height=&quot;103&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;onClick을 두 번 등록했는데 onClick2만 출력이 되었다. 두 개 이상 등록하면 마지막에 등록한 이벤트만 작동하게 된다.&lt;br /&gt;따라서 개발자들이 선호하고 권장하는 이벤트는 addEventener()이다.&lt;/p&gt;</description>
      <category>Javascript/Javascript</category>
      <category>addEventListener</category>
      <category>javascript</category>
      <category>이벤트</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/19</guid>
      <comments>https://ji-hyuning.tistory.com/19#entry19comment</comments>
      <pubDate>Mon, 4 Dec 2023 16:50:10 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] 자료형 배열(Array type)과 for문</title>
      <link>https://ji-hyuning.tistory.com/18</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;여태까지 변수를 선언하고, 하나의 변수에 하나의 데이터 값만 할당을 했었다.&lt;br&gt;ex) let name = &quot;김태희&quot;....&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;배열은 같은 자료들을 담는 자료구조 중의 하나이며, 단순하게 같은 자료형의 나열이다.&lt;br&gt;&amp;nbsp;&lt;br&gt;이번에는 하나의 변수에 여러개의 데이터 값을 할당하려고 한다. 이럴 때 사용하는 것이 배열이다.&lt;br&gt;&amp;nbsp;&lt;br&gt;배열은 [ ] 대괄호로 표현한다.&amp;nbsp;&lt;br&gt;ex) let name = [&quot;김태희&quot;, &quot;조인성&quot;]&lt;br&gt;&amp;nbsp;&lt;br&gt;보통 배열은 여러 개의 요소를 갖기 때문에 일반적으로 배열 이름을 복수형으로 s를 붙여 짓는다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;배열 기본&lt;/b&gt;&lt;/h2&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;let name = [&quot;김태희&quot;, &quot;조인성&quot;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFDfJ6/btsBqAwW2uy/KjBSSrQtLfMZShouN1UUkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFDfJ6/btsBqAwW2uy/KjBSSrQtLfMZShouN1UUkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFDfJ6/btsBqAwW2uy/KjBSSrQtLfMZShouN1UUkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFDfJ6%2FbtsBqAwW2uy%2FKjBSSrQtLfMZShouN1UUkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;772&quot; height=&quot;118&quot; data-origin-width=&quot;772&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 내가 여기서 김태희만 빼내고 싶다면? 인덱스(index)를 사용해야한다.&amp;nbsp;&lt;br&gt;인덱스는 배열이 가지고 있는 순서라고 생각하면 되고, 0부터 시작한다. 따라서 김태희는 0번, 조인성은 1번의 순서를 가지게 된다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;원하는 인덱스로 데이터 값을 출력하기&lt;/b&gt;&lt;/h2&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;let name = [&quot;김태희&quot;, &quot;조인성&quot;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name[1]);&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;757&quot; data-origin-height=&quot;47&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6USEj/btsBiQaHb5h/Ki1jSampEOh3kzK3czJVh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6USEj/btsBiQaHb5h/Ki1jSampEOh3kzK3czJVh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6USEj/btsBiQaHb5h/Ki1jSampEOh3kzK3czJVh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6USEj%2FbtsBiQaHb5h%2FKi1jSampEOh3kzK3czJVh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;757&quot; height=&quot;47&quot; data-origin-width=&quot;757&quot; data-origin-height=&quot;47&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대괄호에 [1]번째를 넣어주게 되면 name이 가지고 있는 변수 중에서 조인성이 출력되는 것을 확인할 수 있다.&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;여러 개의 예제로 적용해보자.&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let name1 = [&quot;김태희&quot;, &quot;조인성&quot;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name1[0]);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let name2 = [&quot;지혀니&quot;, &quot;성시기&quot;];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name2[1]);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let name3 = [1, &quot;이름&quot;, true, undefined, function(){}, {}]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name3[2]);&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;999&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbXVTn/btsBjfagMO4/IPwrQcjR9k8KwD9KfmfDD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbXVTn/btsBjfagMO4/IPwrQcjR9k8KwD9KfmfDD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbXVTn/btsBjfagMO4/IPwrQcjR9k8KwD9KfmfDD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbXVTn%2FbtsBjfagMO4%2FIPwrQcjR9k8KwD9KfmfDD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;999&quot; height=&quot;120&quot; data-origin-width=&quot;999&quot; data-origin-height=&quot;120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;name1에서는 0번째가 가지고 있는 &quot;김태희&quot;,&lt;br&gt;name2에서는 1번째가 가지고 있는 &quot;성시기&quot;,&lt;br&gt;name3에서는 2번째가 가지고 있는 &quot;true&quot;가 출력되는 것을 확인할 수 있다.&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;인덱스&amp;nbsp; 출력해보기&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let name3 = [1, &quot;이름&quot;, true, undefined, function(){}, {}]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name3);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name3.length);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name3[0]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name3[1]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name3[2]);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name3[name3.length - 1]);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name3[name3.length];&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;251&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c32zyv/btsBiVQAcPC/qptMRCXHHisUTYCuE3Ynu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c32zyv/btsBiVQAcPC/qptMRCXHHisUTYCuE3Ynu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c32zyv/btsBiVQAcPC/qptMRCXHHisUTYCuE3Ynu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc32zyv%2FbtsBiVQAcPC%2FqptMRCXHHisUTYCuE3Ynu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;992&quot; height=&quot;251&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;251&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;배열의 반복문&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;반복문을 이용하여 배열의 모든 요소를 출력해보자!&lt;br&gt;반복문이란? 동일한 작업을 여러번 반복하는 것이다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;for 반복문&lt;/b&gt;&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;for(let i =0; i &amp;lt; 10; i++){ 

}
--------------------------------
for(초기값; 조건식; 증감식) {
	출력
}

처음 초기값 i는 0으로 놓고, i가 10보다 작으면 i가 증가하도록 코드를 실행하게 함(i++)
이 값을 돌며 반복하고 내가 말한 조건이 되는 10이 되면(false) 멈추게 된다.&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLHn6L/btsBqJHyo2v/jMHKyvr14KFv7NFmOXdD8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLHn6L/btsBqJHyo2v/jMHKyvr14KFv7NFmOXdD8K/img.png&quot; data-alt=&quot;0부터 9가아닌 0부터 10까지 찍히게 하고 싶으면 조건식에 i &amp;amp;amp;amp;lt; 11; 로 수정, 또는 console.log(i+1), 혹은 i &amp;amp;amp;amp;lt;=10 으로 수정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLHn6L/btsBqJHyo2v/jMHKyvr14KFv7NFmOXdD8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLHn6L%2FbtsBqJHyo2v%2FjMHKyvr14KFv7NFmOXdD8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;364&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;0부터 9가아닌 0부터 10까지 찍히게 하고 싶으면 조건식에 i &amp;amp;amp;lt; 11; 로 수정, 또는 console.log(i+1), 혹은 i &amp;amp;amp;lt;=10 으로 수정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJ8g9/btsBqgZXpMW/8NJeDtN0NxtBKEHQi7vJg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJ8g9/btsBqgZXpMW/8NJeDtN0NxtBKEHQi7vJg0/img.png&quot; data-alt=&quot;출처: 유튜브 코딩앙마 / 자바스크립트 기초강좌 #8(반복문,for,while,do while)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJ8g9/btsBqgZXpMW/8NJeDtN0NxtBKEHQi7vJg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmJ8g9%2FbtsBqgZXpMW%2F8NJeDtN0NxtBKEHQi7vJg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1262&quot; height=&quot;635&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처: 유튜브 코딩앙마 / 자바스크립트 기초강좌 #8(반복문,for,while,do while)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1: 초기값 지정&lt;br&gt;2: 조건이 트루이면&lt;br&gt;3: 코드를 실행하고&lt;br&gt;4: 반복을 실행하고&lt;br&gt;5: 조건이 트루이면&lt;br&gt;.&lt;br&gt;.&lt;br&gt;.&lt;br&gt;이런식으로 계속 반복하다가 flase 되면 반복문을 빠져나오게 한다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;b&gt;예시 )&lt;/b&gt;&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;html&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;let name3 = [&quot;김태희&quot;, &quot;조인성&quot;, &quot;성시기&quot;]&lt;/code&gt;&lt;/pre&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;for (let i =0; i &amp;lt;name3.length; i++) {
	console.log(name3[i];
}&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cENPsg/btsBjby3NMW/v0kkPCvojvkPOvg7DaizLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cENPsg/btsBjby3NMW/v0kkPCvojvkPOvg7DaizLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cENPsg/btsBjby3NMW/v0kkPCvojvkPOvg7DaizLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcENPsg%2FbtsBjby3NMW%2Fv0kkPCvojvkPOvg7DaizLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;134&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br&gt;해설 )&lt;br&gt;초기값은 0으로 하고, 조건식은 name3 변수의 길이만큼 i를 증감시켜준다.&lt;br&gt;따라서 name3의 i를 출력해보면 총 3개의 배열이 나온 것을 확인할 수 있다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript/Javascript</category>
      <category>index</category>
      <category>javascript</category>
      <category>배열</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/18</guid>
      <comments>https://ji-hyuning.tistory.com/18#entry18comment</comments>
      <pubDate>Mon, 4 Dec 2023 14:56:46 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] var / let / const 변수 선언과 규칙</title>
      <link>https://ji-hyuning.tistory.com/17</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;변수란?&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 저장하기 위해 사용하는 공간&lt;br&gt;변수를 정할 때 적절한 변수명으로 적어주고 등호기호로 할당해 줄 데이터를 적어준다.&lt;br&gt;ex) name = jihyun &amp;lt;= 이런 변수를 암시적 선언이라고 한다.&lt;/p&gt;&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;암시적선언이란?&lt;/b&gt; 자바스크립트에서 제공하고 있는 변수 선언 키워드인 'var / let / const'를 사용하지 않고&amp;nbsp;&lt;br&gt;변수를 선언하는 것&lt;/blockquote&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;자바스크립트에서는 일반적으로 변수를 선언할 때 암시적 선언을 권장하지 않고&lt;br&gt; 'var/let/const'를 사용하여 변수를 &lt;b&gt;명시적으로 선언하는 것&lt;/b&gt;을 권장하고 있다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;명시적 선언&lt;/b&gt;&lt;/h2&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var name = &quot;김태희&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let style = &quot;기본스타일&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(style);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const constant = 10;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(constant);&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;var / let / const 의 특징&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;var , let = 변수&lt;br&gt;const = 상수&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;var의 특징&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 초창기 키워드이며, 변수를 중복할당 할 수 있다. 다시 선언할 수 있는 행위가 가능하지만, &lt;br&gt;그 반면 추후&amp;nbsp;대규모 프로젝트를 진행할 때 위험성이 높다.&lt;br&gt;&amp;nbsp;&lt;br&gt;예로 들어서 같은 프로젝트를 진행하는 A개발자가 var 키워드로 &quot;name&quot; 변수를 선언하여 사용했는데 &lt;br&gt;B개발자도 똑같이 &quot;name&quot; 이라는 변수로 선언하여 사용했다면? 개발자 도구에서는 데이터가 제대로 출력이 되므로 &lt;br&gt;서로의 변수명을 인지하지 못하고 충돌할 수 있다.&lt;br&gt;ex) 상사 = &quot;변수명 name 수정 부탁드립니다. &quot; 라고 물어오면 어떤 변수인지알고 수정을 하겠는가.&lt;br&gt;&amp;nbsp;&lt;br&gt;따라서 var는 권장하고 있지않다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var name = &quot;김태희&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var name = &quot;조인성&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rMqiS/btsBqhD1YRl/ofkIkk8FiJUMn0IT4xUWw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rMqiS/btsBqhD1YRl/ofkIkk8FiJUMn0IT4xUWw1/img.png&quot; data-alt=&quot;각각 데이터가 출력되는 것을 확인할 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rMqiS/btsBqhD1YRl/ofkIkk8FiJUMn0IT4xUWw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrMqiS%2FbtsBqhD1YRl%2FofkIkk8FiJUMn0IT4xUWw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;187&quot; height=&quot;100&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;각각 데이터가 출력되는 것을 확인할 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;let의 특징&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;let은 var와 다르게 변수의 중복선언이 불가능하다.&amp;nbsp;&lt;br&gt;var처럼 중복선언을 하게 되면 프로그램에서도, 개발자도구에서도 빨간 오류가 뜬 것을 확인할 수 있다.&lt;br&gt;let 같은 경우는 다른 개발자들이 충돌할 수 있는 위험을 최소한으로 감소시켜준다고 볼 수 있고 &lt;br&gt;굉장히 안정성이 높은 변수 키워드이다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvmRFw/btsBqgLTCTy/QMNeqFzIF179GOUHRz5151/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvmRFw/btsBqgLTCTy/QMNeqFzIF179GOUHRz5151/img.png&quot; data-alt=&quot;이미 name이라는 변수가 선언이 되있다는 에러메시지가 출력됨&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvmRFw/btsBqgLTCTy/QMNeqFzIF179GOUHRz5151/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdvmRFw%2FbtsBqgLTCTy%2FQMNeqFzIF179GOUHRz5151%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;584&quot; height=&quot;164&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이미 name이라는 변수가 선언이 되있다는 에러메시지가 출력됨&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;167&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjftEF/btsBo7IlP3B/RjsEt6hTQqKoMYJIpmwLG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjftEF/btsBo7IlP3B/RjsEt6hTQqKoMYJIpmwLG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjftEF/btsBo7IlP3B/RjsEt6hTQqKoMYJIpmwLG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjftEF%2FbtsBo7IlP3B%2FRjsEt6hTQqKoMYJIpmwLG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;461&quot; height=&quot;167&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;167&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;const의 특징&lt;/b&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;let과 같이 변수의 중복선언이 불가능하며 let 오류가 뜬 것처럼 똑같이 에러가 난다.&lt;br&gt;그럼 let과 const와 똑같은 것이 아닐까? 라고 생각할 수 있다.&amp;nbsp;&lt;br&gt;하지만 let과는 다르게 안 되는 것이 한 가지 더 있는데, &lt;u&gt;변수에 할당된 데이터가 변경이 되지 않는다는 점&lt;/u&gt;이 있다.&lt;br&gt;&amp;nbsp;&lt;br&gt;예로 들어서 let과 암시적 선언에 똑같이 &quot;name&quot;이라는 변수를 입력해주면&lt;br&gt; 첫번째 &quot;name&quot; 변수에는 한가인, 두번째 &quot;name&quot;에는 조인성으로 출력이 되는 것을 확인할 수 있다. &lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let name = &quot;한가인&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name = &quot;조인성&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tPjaB/btsBiTLtkX5/ulVBY5lQAmdinJlnkhOsJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tPjaB/btsBiTLtkX5/ulVBY5lQAmdinJlnkhOsJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tPjaB/btsBiTLtkX5/ulVBY5lQAmdinJlnkhOsJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtPjaB%2FbtsBiTLtkX5%2FulVBY5lQAmdinJlnkhOsJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;343&quot; height=&quot;108&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;const로 해보면 첫번째 변수만 출력이 되고, 두번째 변수는 출력이 되지 않는 것을 볼 수 있다.&lt;br&gt; const 키워드는 최초의 변수만 할당하고 그 값을 변경할 수 없다는 점이 있다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const name = &quot;한가인&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name = &quot;조인성&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log(name);&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBdaZz/btsBldbhF8t/0F8x5X87o7NG0rWNQ3XGJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBdaZz/btsBldbhF8t/0F8x5X87o7NG0rWNQ3XGJ0/img.png&quot; data-alt=&quot;상수 변수에는 할당할 수 없다는 에러메시지가 나옴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBdaZz/btsBldbhF8t/0F8x5X87o7NG0rWNQ3XGJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBdaZz%2FbtsBldbhF8t%2F0F8x5X87o7NG0rWNQ3XGJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;783&quot; height=&quot;135&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;상수 변수에는 할당할 수 없다는 에러메시지가 나옴&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;따라서 const 키워드로 선언한 변수는 데이터를 변경할 수 없기 때문에, 변하지 않는 수 즉, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;변수가 아닌 상수&lt;/b&gt;&lt;/span&gt;라고 불린다.&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;변수 이름을 지어줄 때 일정한 규칙&lt;/b&gt;&lt;/h2&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #cccccc;&quot;&gt;
 &amp;nbsp;
&lt;/div&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;1. 변수 이름은 카멜케이스(camelcase)방법으로 작성한다. =&amp;gt; 단어의 첫글자는 소문자, 연결된 단어의 첫글자는 대문자&lt;br&gt;2. 변수 이름은 _, $문자로만 시작한다.&lt;br&gt;3. 상수나 축약어는 대문자와 스네이크케이스(snakecase)방법을 사용한다. =&amp;gt; 언더바(_)를 사용해 문자를 이어준다.&lt;br&gt;4. 예약어는 사용할 수 없다.&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;//1. 변수 이름은 카멜케이스 방법으로 작성한다.
// 카멜케이스(camelcase)란? 단어의 첫글자는 소문자, 연결된 단어의 첫글자는 대문자로 쓰는 작성법
let userName = &quot;jihyun&quot;;&amp;nbsp;&amp;nbsp;//O
let user_name = &quot;jihyun&quot;; //X 에러는 나지 않지만, 카멜케이스로 선언을 해줘야한다.&lt;/code&gt;&lt;/pre&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;//2. 변수 이름은 _, $, 문자로만 시작한다.
let day12 = &quot;월요일&quot;;//O
let _day12 = &quot;월요일&quot;;//O
let $day12 = &quot;월요일&quot;//O $로 시작
let 12day = &quot;월요일&quot;; //x
let @day12 = &quot;월요일&quot; //x _,$ 이외의 특수문자라서 X&lt;/code&gt;&lt;/pre&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;//3. 상수나 축약어는 대문자와 스네이크케이스 방식으로 작성한다.
//축약어는 보통 상수인 const로 정의해야하고, 축약어가 아니더라도 상수를 선언했다면 무조건 대문자로 작성하고 스네이크케이스(snakecase)방법을 사용하여 단어를 _로 연결해준다.
const HTML = &quot;Hyper Text Markup Language&quot;;
const MAX_LEVEL = &quot;99&quot;;&lt;/code&gt;&lt;/pre&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;//4. 예약어는 사용할 수 없다.&amp;nbsp;&amp;nbsp;ex) var, let, const, typeof 등..
const var = 10; //X var는 변수 선언 키워드로 변수 이름을 지을 수 없다.&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMcMnH/btsBki4PZPz/TYZ5KIU35yCVkycQXXepX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMcMnH/btsBki4PZPz/TYZ5KIU35yCVkycQXXepX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMcMnH/btsBki4PZPz/TYZ5KIU35yCVkycQXXepX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMcMnH%2FbtsBki4PZPz%2FTYZ5KIU35yCVkycQXXepX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1207&quot; height=&quot;624&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;</description>
      <category>Javascript/Javascript</category>
      <category>const</category>
      <category>javascript</category>
      <category>let</category>
      <category>Var</category>
      <category>명시적</category>
      <category>변수</category>
      <category>상수</category>
      <category>암시적</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/17</guid>
      <comments>https://ji-hyuning.tistory.com/17#entry17comment</comments>
      <pubDate>Mon, 4 Dec 2023 12:22:09 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] for문을 사용해서 tab-menu/탭메뉴 만들기</title>
      <link>https://ji-hyuning.tistory.com/15</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 탭 버튼과 탭 컨텐츠가 &lt;/b&gt;&lt;u&gt;&lt;b&gt;한 영역안에&lt;/b&gt;&lt;/u&gt;&lt;b&gt; 있을 경우&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;이 방법은 스크립트를 간소화 할 수 있는 장점이 있고 또한 마크업 구조의 접근성을 높일 수 있는 구조이다.&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;HTML&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt; &amp;lt;div class=&quot;wrap&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&quot;tab-menu&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul class=&quot;tab-lists&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li class=&quot;tab-list-on&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href=&quot;#tab1&quot; class=&quot;btn&quot;&amp;gt;탭메뉴1&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&quot;tab1&quot; class=&quot;cont&quot;&amp;gt;첫번째 탭 내용&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href=&quot;#tab2&quot; class=&quot;btn&quot;&amp;gt;탭메뉴2&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&quot;tab2&quot; class=&quot;cont&quot;&amp;gt;두번째 탭 내용&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href=&quot;#tab3&quot; class=&quot;btn&quot;&amp;gt;탭메뉴3&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&quot;tab3&quot; class=&quot;cont&quot;&amp;gt;세번째 탭 내용&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CSS&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt; &amp;lt;style&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* {padding: 0; margin: 0;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a{text-decoration: none; color: inherit;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;li {list-style: none;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.wrap {display: flex; justify-content: center; align-items: center;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu {position: relative;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .tab-lists {display: flex;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .tab-lists li {margin-right: 10px;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .tab-lists .cont{position: absolute; top: 25px; left: 0; background: #555; color: #fff; text-align: center; width: 250px; height: 50px; display: none;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .tab-list-on {overflow: hidden;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-lists .tab-list-on .btn{font-weight: bold; color: #000;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-lists .tab-list-on .cont{display: block;}
&amp;nbsp;&amp;nbsp;&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;b&gt;Javascript - for문&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt; &amp;lt;script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const tabMenu = document.querySelectorAll(&quot;.tab-lists li&quot;)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(let i =0; i &amp;lt; tabMenu.length; i++){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tabMenu[i].querySelector('.btn').addEventListener('click',function(e){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.preventDefault();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(let j = 0; j &amp;lt;tabMenu.length; j++){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tabMenu[j].classList.remove('tab-list-on');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.parentNode.classList.add('tab-list-on');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;1. tab-lists 안에 있는 li에 addEventListener로 클릭 이벤트 걸기&lt;br&gt;2. .btn을 a로 만들어놨는데 화면 이동을 막을 수 있는 e.preventDefault()를 걸어준다.&lt;br&gt;3. .btn 클릭시 해당 버튼의 부모 요소에 .tab-list-on 클래스를 준다. (add)&lt;br&gt;4, .btn을 클릭했을 때, 다른 부모 요소 .tab-list-on 클래스를 해제시켜준다. (remove)&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 탭 버튼과 탭 컨텐츠가 &lt;/b&gt;&lt;u&gt;&lt;b&gt;다른 영역에&lt;/b&gt;&lt;/u&gt;&lt;b&gt; 있을 경우&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아래 코드와 같이 탭과 컨텐츠가 마크업상 분리 되어있을 때 사용할 수 있는 탭 구현 방법이다.&lt;/b&gt;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;HTML&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;html&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt; &amp;lt;div class=&quot;tab-menu&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul class=&quot;lists&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li class=&quot;tab-list-on&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href=&quot;#tab1&quot; class=&quot;btn&quot;&amp;gt;첫번째 탭&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href=&quot;#tab2&quot; class=&quot;btn&quot;&amp;gt;두번째 탭&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href=&quot;#tab3&quot; class=&quot;btn&quot;&amp;gt;세번째 탭&amp;lt;/a&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div class=&quot;cont-box&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&quot;tab1&quot; class=&quot;cont&quot; style=&quot;display: block;&quot;&amp;gt;첫번째 내용&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&quot;tab2&quot; class=&quot;cont&quot;&amp;gt;두번째 내용&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id=&quot;tab3&quot; class=&quot;cont&quot;&amp;gt;세번째 내용&amp;lt;/div&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;CSS&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;lt;style&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* {padding: 0; margin: 0;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a{text-decoration: none; color: inherit;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;li {list-style: none;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu {position: relative;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .lists{overflow: hidden; display: flex; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .lists li {margin-right: 10px; border-bottom: 2px solid #333;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .list .tab-list-on {font-weight: bold; color: #000;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.tab-menu .cont {position: absolute; top: 25px; left: 0; background: #ccc; text-align: center; width: 250px; height: 100px; margin-top: -2px; display: none;}
&amp;nbsp;&amp;nbsp;&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;&lt;b&gt;Javascript - for문&lt;/b&gt;&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const tabMenu = document.querySelectorAll(&quot;.tab-menu .lists li&quot;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const cont = document.querySelectorAll(&quot;.tab-menu .cont-box .cont&quot;);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let actiVate = ''; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(let i =0; i&amp;lt;tabMenu.length; i++){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tabMenu[i].querySelector('.btn').addEventListener('click',function(e){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.preventDefault();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(let j =0; j &amp;lt; tabMenu.length; j++){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tabMenu[j].classList.remove('tab-list-on');

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cont[j].style.display = 'none';
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.parentNode.classList.add('tab-list-on');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;actiVate = this.getAttribute('href');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.querySelector(actiVate).style.display = 'block';
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;1번과 다르게 탭 버튼과 콘텐츠가 떨어져있어도 actiVater가 현재 활성화되어있어&amp;nbsp;&lt;br&gt;탭 버튼을 클릭할 때마다 a태그의 href 값을 받아와 해당하는 id값을 보여준다.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;완성본&lt;/b&gt;&lt;/h4&gt;
            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&gt;
            &lt;/figure&gt;
        &lt;p data-ke-size=&quot;size14&quot;&gt;출처: https://abcdqbbq.tistory.com/88&lt;/p&gt;</description>
      <category>Javascript/Javascript</category>
      <category>For</category>
      <category>TabMenu</category>
      <category>자바스크립트</category>
      <category>탭메뉴</category>
      <category>탭메뉴 만들기</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/15</guid>
      <comments>https://ji-hyuning.tistory.com/15#entry15comment</comments>
      <pubDate>Sun, 3 Dec 2023 01:01:17 +0900</pubDate>
    </item>
    <item>
      <title>[일기] 20대 후반, 이전 경력을 버리고 '비전공자 신입 웹 퍼블리셔'로 가다 / 웹 퍼블리셔 준비하기</title>
      <link>https://ji-hyuning.tistory.com/13</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;내 나이 만20대 중후반, 20대 극초반 아무것도 모르는 상태로 처음에 사무보조 알바로 들어가 &lt;br /&gt;회계팀 제안을 받아 5-6년간 회계로 일하게 되었다. (전공이 경영분야 전공이기도 함)&lt;br /&gt;&amp;nbsp;&lt;br /&gt;일하다가 문득 든 생각&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;&quot;내가 이 일이 적성에 맞긴한가? 이렇게 20대를 허무하게 보내고 싶지 않은데&quot;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라는 생각이 들었다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;생각해보니 20대 초반 아무것도 모르던 시절 좋은 제안을 덥썩 물고 쭉 그 길을 향해 달려왔는데 &lt;br /&gt;정작 나는 내가 무슨 일을 하고 싶은지 찾아보지도 도전해보지도 않고 그냥 흘러가는 그대로 쭉 앉아있던 그런 사람이였다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;그래서 나는 결심했다. 퇴사하기로. 무모한 도전이였다.&lt;/b&gt;&lt;br /&gt;물론 주위에서 지인들이 요즘 취업시장이 좋지 않다고 퇴사를 말리는 사람이 대부분이였지만 &lt;br /&gt;반대로 그만큼 새 꿈을 펼쳐보라는 많은 응원을 받았다. 이전직장에서도 새 출발해보라고 응원을 해주셨다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;먼저 퇴사하기 전, 퍼블리셔 교육을 받을 수 있는 학원을 먼저 알아봤다.&amp;nbsp;&lt;br /&gt;다행히 집 바로 근처에 학원이 있었고 학원 상담사 선생님이 수료한 사람들의 포트폴리오를 보여주셨는데 너무 신기했다.&lt;br /&gt;&lt;i&gt;&lt;b&gt;&quot;이게 6-7개월만에&amp;nbsp; 홈페이지 만드는게 가능하다고...? 밑져야 본전이다 해보자.&quot;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;그렇게 나는 새로운 꿈에 첫 발을 디딛었다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;다행히 좋은 강사쌤을 만난 덕분에 많이 성장할 수 있었고 많은 것을 배울 수 있었다.&lt;br /&gt;솔직히 학원 다닐 초반에는 이전 경력도 버려야했고, 수중에 가지고 있는 돈도 많지않고... &lt;br /&gt;여유가 없어 방황도 많이했지만 시간이 지날수록 안정적으로 학원을 다녔고 흥미를 붙였다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;또한 내가 앉은 자리 양옆자리에 아무도 없어서 4개월간은 다른 사람이랑 말을 한번도 섞어본 적이 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(입을 한번도 열지 않아서 집가면 입냄새가...후...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 하반기에 팀프로젝트를 진행하면서 팀이 꾸려졌는데 다행히 잘 맞아 아직까지 연락하고 지내고있다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;u&gt;그리고... 학원 수료 한달 후, 복지도 좋고 규모가 조금 있는 곳에 취업 성공했다! &lt;/u&gt;&lt;br /&gt;&lt;u&gt;보통 3개월정도는 소요된다고 하는데 나는 취업을 빠르게 한 편이라고 한다.&lt;/u&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;내가 배운것을 토대로 학원에서 배운 점을 공유해보고자 한다.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;학원에서 배운 언어와 툴&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Html5&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Css&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Sass&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Javascript&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JQuery&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Firebase&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;React&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bootstrap&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Adobe xd&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Photoshop&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Illustrator&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Api&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;이 외.. 아마 더 배웠을 것 같은데 생각이 잘 나지 않는다.&lt;br /&gt;23년 4월~ 23년 10월까지 정~말 많은 것을 배웠다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;배우면서 강사쌤이 참 좋은분이라는 것을 알게됐다.&lt;br /&gt;원래 정해져있는 히스토리가 아닌 이상, 이정도로 알려주시기 쉽지 않을텐데&amp;nbsp;&lt;br /&gt;수강과정에 있는 것보다 훨씬 더 많은 언어와 툴을 알려주신 것 같았다. (아님말구...)&lt;br /&gt;&amp;nbsp;&lt;br /&gt;저 많은 툴을 잘 쓰지는 못하지만 그래도 한번씩은 해봤고 우여곡절 끝에 프로젝트를 완성한 점이 많았어서 &lt;br /&gt;학원 수강한 것에 전혀 후회가 되지 않는다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;학원 다니면서 꼭 해야할 것&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학원을 다니면서 제일 후회했던게, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;꾸준히 공부&lt;/b&gt;&lt;/span&gt;를 안했던 것이다.&lt;br /&gt;난 이제서야 블로그 개설해서 이론 공부하고있는데.. 만약 학원 수강계획이 있는 사람이 있다면&amp;nbsp;&lt;br /&gt;블로그를 만들고 학원을 다니면서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;일주일에 1-2개라도 글 올리는 것&lt;/b&gt;&lt;/span&gt;을 추천한다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;블로그에 글을 적으면서 공부하면 정말 많은 도움을 받을 수 있다.&lt;br /&gt;학원을 다니면서 전혀 이해되지않던 자바스크립트가 이해되는 마법이 생긴다ㅋㅋㅋㅋㅋㅋ&lt;br /&gt;난 함수도 변수도 헷갈렸는데 이제 그나마 뭐가 뭔지&amp;nbsp;파악이 된 것 같다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;포트폴리오는 학원 수료 하기 전, 1-2개월 전에 미리 만들어둘 것.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;나는 10월말쯤 수료했는데 10월 초부터 포트폴리오를 만들었다.&amp;nbsp;&lt;br /&gt;포폴 만들면서 2-3번은 뒤엎었고 그만큼 시간이 뺏겨 강사쌤에게 피드백 받는 시간이 줄어드니 &lt;br /&gt;먼저 최대한 만들어놓고 피드백을 받자.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;모르는 것이 있으면 다른 사람에게 먼저 물어보지말고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;자기가 할 수 있는 선에서 최대한 구글링&lt;/b&gt;&lt;/span&gt;을 하거나&lt;br /&gt;자료 수집을 통해 해결하자! 나는 원래 독립적인 성향이 강했고 양 옆에 사람이 없어 어쩔 수 없이 쭉 혼자 해결을 해왔는데 혼자 해결하는 만큼&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그만큼 본인이 성장할 수 있는 기회이다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;나 같은 경우는 학원 다닐 초반에 방황을 많이 해서 수업을 빠진 적이 여러 번 있었다. &lt;br /&gt;다음 날, 수업을 들으러 갔을 때 빠지는 사이 모르는 태그들이 나와 우선 그대로 받아적되, 쉬는 시간을 활용해 &lt;br /&gt;그 태그의 정보, 사용법을 익혔다. 또한 점심시간이나 집에 돌아와서 그 태그의 사용법이 익숙해질 때까지 연습해봤었다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그리고!!! &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;html과 css는 최소 한 달전에 연습해보길 추천한다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;학원에서 html을 배우고 있을 때, 본인은 훨씬 더 앞서있을 것이고 다른 공부할 시간이 많이 생길 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;그 틈을 타서 본인을 빠르고 크게 성장시키자.&lt;br /&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>일상/오늘 하루</category>
      <author>지얌이</author>
      <guid isPermaLink="true">https://ji-hyuning.tistory.com/13</guid>
      <comments>https://ji-hyuning.tistory.com/13#entry13comment</comments>
      <pubDate>Thu, 30 Nov 2023 10:35:54 +0900</pubDate>
    </item>
  </channel>
</rss>