Button으로 Resizable 구현하기

2024. 6. 4. 18:47·Study/Next.js

Button으로 Resizable 구현하기

반응형

프로젝트 도중 Resizable 구현

이전에 Draggable 을 구현한것 처럼 아래와 같은 코드로 구현을 해보았다.

import { RefObject } from 'react';
import styles from './resizeButton.module.css';

interface ResizeButtonProps {
  resizableRef: RefObject<HTMLDivElement>;
}

const ResizeButton = ({ resizableRef }: ResizeButtonProps) => {
  const resize = (pageX: number, pageY: number) => {
    if (resizableRef.current) {
      const rect = resizableRef.current.getBoundingClientRect();
      const newWidth = pageX - rect.left;
      const newHeight = pageY - rect.top;
      resizableRef.current.style.width = `${newWidth}px`;
      resizableRef.current.style.height = `${newHeight}px`;
    }
  };

  const onMouseMove = (e: MouseEvent) => {
    resize(e.pageX, e.pageY);
  };

  const onMouseUp = () => {
    document.removeEventListener('mousemove', onMouseMove);
    document.removeEventListener('mouseup', onMouseUp);
  };

  const onMouseDown = () => {
    console.log('클릭');
    document.addEventListener('mousemove', onMouseMove);
    document.addEventListener('mouseup', onMouseUp);
  };

  return 
	(
    	<div className={styles.resize_button} onMouseDown={onMouseDown}></div>
    );
};

export default ResizeButton;

onMoseDown : 마우스 클릭시 이벤트 실행

onMoseUp : 마우스 클릭을 땔 시에 실행

onMoseMove : 마우스를 움직일때 resize를 실행

resize : 참조한 ref의 크기를 마우스의 변경정도 만큼 변경시킴

반응형

'Study > Next.js' 카테고리의 다른 글

당신의 Next.js 프로젝트, 지금 해킹당할 수 있습니다. React 19 보안이슈에 대해 CVE-2025-55182 (React2shell)  (7) 2025.12.10
Three.js 화면 조정하기 Next.js 한스푼을 더해서  (1) 2024.06.26
Draggable 구현하기  (0) 2024.06.04
Next.js metadata 다루는 방식의 변  (1) 2024.05.14
Next Image 사용하는 방법  (1) 2024.05.14
'Study/Next.js' 카테고리의 다른 글
  • 당신의 Next.js 프로젝트, 지금 해킹당할 수 있습니다. React 19 보안이슈에 대해 CVE-2025-55182 (React2shell)
  • Three.js 화면 조정하기 Next.js 한스푼을 더해서
  • Draggable 구현하기
  • Next.js metadata 다루는 방식의 변
WHITE_FROST
WHITE_FROST
개발공부리뷰블로그
  • WHITE_FROST
    하얀하얀IT
    WHITE_FROST
  • 전체
    오늘
    어제
    • 분류 전체보기 (135)
      • AI (7)
        • AI 개념 & 이론 (0)
        • AI 툴 & 자동화 (0)
        • 로컬 & 오픈소스 AI (0)
        • AI 모델 & API (1)
        • AI 내용 (6)
      • Study (59)
        • Infra (3)
        • Next.js (8)
        • React (13)
        • React-Native (15)
        • TypeScript (1)
        • Python (2)
        • JavaScript (3)
        • Android (1)
        • DB (2)
        • JAVA (1)
        • Design Pattern (1)
        • Obsidian (1)
        • Error (7)
      • Coding (52)
        • 알고리즘 정리 (6)
        • 알고리즘 문제풀이 (46)
      • Me (16)
        • Tip (3)
        • 기타 (6)
        • 공부일상 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    react
    React-Native cli
    java
    Expo
    react-native
    hooks
    SWEA
    Claude
    D2
    d1
    Ai
    알고리즘
    Python
    코테
    Next.js
    리액트네이티브
    javascript
    react-native-maps
    오블완
    ReactHook
    error
    ios
    백준
    코딩테스트
    reactnative
    티스토리챌린지
    boj
    mongodb cloud
    React Hooks
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
WHITE_FROST
Button으로 Resizable 구현하기
상단으로

티스토리툴바