반응형

JS에서 크기 변화 이벤트를 감지하는 방법은 window.addEventListener("resize", function)을 사용하면 된다. 이번 글에서는 window.addEventListener를 사용하는 방법에 대해 기록한다.


목차

1. resize 이벤트

1. resize 이벤트

resize의 이벤트는 브라우저의 크기를 조절할 때 감지하는 이벤트다.

vue 자체적으로는 resize를 할 수가 없어서 DOM에 mount가 될 때 resize 이벤트를 감지하여 브라우저의 Width와 Height를 가져 온다.

window.addEventListener("resize", function() {
  // resize 감지 시의 로직
})

 

아래와 같이, mounted 단계일 때 window.addEventListener를 사용하여 Vue에 전달을 하고, 다시 Unmont 하기 전에 window 이벤트를 제거해 준다.

mounted() {
    window.addEventListener("resize", this.handleResize);
    this.handleResize();
},

beforeUnmount() {
    window.removeEventListener("resize", this.handleResize);
}

methods: {
    handleResize(event) {
      const width = window.innerWidth;
      const height = window.innerHeight;
      this.isWeb = width < 900 ? true : false;
      this.isWeb = height < 900 ? true : false;
    }
}

 

addEventListner의 이벤트는 method에 정의하여 사용하면 된다. 즉, mount에서 이벤트 리스너 등록하고, 최초 1번 handleResize 실행하여 넓이와 높이를 가져와 웹인지 아닌지 판별 후 적용한다. 그리고 unmount를 할 때, 해당 이벤트 리스너를 삭제한다. 이 때, Unmount를 하거나 beforedestory를 할 때 적용해도 된다.

 

const width = window.innerWidth;       // 브라우저 화면 넓이
const height = window.innerHeight;     // 브라우저 화면 높이
const out_width = window.outerWidth;   // 브라우저 전체 넓이
const out_height = window.outerHeight; // 브라우저 전체 높이

 

위와 같이, 브라우저의 각각 화면과 전체에 대한 넓이와 높이를 가져올 수 있다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기