코딩을해보자

저장용 ㅋ

memomemomemo 2024. 10. 28. 21:37
728x90
반응형
addEventListener('load', function() {
  const menuIcon = document.querySelector('.menu-icon');
  const hide = document.querySelector('.hide');
  const start = this.document.querySelector('.start')

  menuIcon.addEventListener('click', function() {
    console.log("1")
    this.classList.toggle('active');
    hide.classList.toggle('active');

  });


  hide.addEventListener('mouseleave', function() {
    hide.classList.remove('active'); });
 
  menuIcon.addEventListener('mouseleave', function() {
    this.classList.remove('active');

   
 
  });
 
  addEventListener("scroll", (e) => {
    let wsY = window.scrollY;
    console.log(wsY)
    const menu = document.querySelector('.menu');
    if(wsY >= 100){
      menu.style.top = "-100%";
    }else{
      menu.style.top = "0%";
    }
  })
 
 
 
  let count = 0;
  function updateRotation() {
    const carrousel = document.querySelector(".content-carrousel");
    //캐러셀의 rotatey값을 COUNT값으로 설정
    carrousel.style.transform = `rotateY(${count}deg)`;
  }
 
  //1초에 60번 COUNT를 0.2만큼 증가시키고, updateRotation함수를 호출하여 회전을 업데이트하는 타이머를 설정
  let timer = setInterval(() => {
    count += 0.2;
    updateRotation();
  }, 1000 / 60);
 
  const slideshow = document.querySelector(".slideshow");
 
  slideshow.addEventListener("mouseenter", () => {
    clearInterval(timer);
  });
 
  slideshow.addEventListener("mouseleave", () => {
   
    timer = setInterval(() => {
      count += 0.2;
      updateRotation();
    }, 1000 / 60);
  });
 
  //왼쪽 화살표 버튼 클릭시
  document.querySelector('.right-btn').addEventListener('click',(e)=>{
    e.preventDefault();
    //카운트를 가장 가까운 40의 배수로 반올림한 후 40일 더하고 업데이트로테이션함수를 호출하여 회전을 업데이트 합니다?
    count = Math.round(count /40) * 40 + 40;
    updateRotation();
  })
 
  //오른쪽 화살표 버튼 클릭시
  document.querySelector('.left-btn').addEventListener('click',(e)=>{
    e.preventDefault();
    //카운트를 가장 가까운 40의 배수로 반올림한 후 40을 빼고 업데이트로테이션함수를 호출하여 회전을 업데이트 합니다?
    count = Math.round(count /40) * 40 - 40;
    updateRotation();
  })
 
});



addEventListener('DOMContentLoaded', () => {

  let count1Completed = false; // count1이 완료되었는지 확인하는 플래그
  let count2Completed = false; // count2이 완료되었는지 확인하는 플래그

  // 스크롤 이벤트 리스너 추가
  addEventListener("scroll", () => {
    let wsY = window.scrollY;
    console.log(wsY); // 현재 스크롤 위치 확인용

    // 특정 스크롤 위치 이상일 때 카운트 애니메이션 실행
    if (wsY >= 1600) {

      // count1 카운트 애니메이션 (한 번만 실행)
      if (!count1Completed) { // 플래그가 false일 때만 실행
        const countElement1 = document.getElementById('count1');
        const targetCount1 = parseInt(countElement1.getAttribute('count-data1'));
        let currentCount1 = 0;

        const counter1 = setInterval(() => {
          currentCount1++;
          countElement1.textContent = currentCount1;

          if (currentCount1 >= targetCount1) {
            clearInterval(counter1); // 목표 값에 도달하면 중지
            count1Completed = true; // 플래그를 true로 설정해 다시 실행되지 않도록 함
          }
        }, 35); // 35ms 간격
      }

      // count2 카운트 애니메이션 (한 번만 실행)
      if (!count2Completed) { // 플래그가 false일 때만 실행
        const countElement2 = document.getElementById('count2');
        const targetCount2 = parseInt(countElement2.getAttribute('count-data2'));
        let currentCount2 = 0;

        const counter2 = setInterval(() => {
          currentCount2++;
          countElement2.textContent = currentCount2;

          if (currentCount2 >= targetCount2) {
            clearInterval(counter2); // 목표 값에 도달하면 중지
            count2Completed = true; // 플래그를 true로 설정해 다시 실행되지 않도록 함
          }
        }, 17); // 10ms 간격
      }
    }
  });
});





728x90
반응형