[ChartJS / react-chartjs-2] 완벽한 반응형 차트를 구현해보자 #2

2024. 10. 29. 16:47·FE
목차
  1. 🌟 1) 들어가기
  2. 🌟  2) responsive를 false로 하고 직접 컨트롤하기
  3. 👿 문제점!!
  4. 🌟  3) responsive: true로 조절하기

기본적인 세팅이 궁금하다면, 앞선 포스팅을 확인하시기 바란다.

🌟 1) 들어가기

 

일단 현재 잡혀있는 options의 내용은 다음과 같으며, 주석으로 각각 옵션에 대한 설명을 작성해 보겠다.

 

const options = {
  responsive: true, // canvas 반응형 여부
  plugins: {
    legend: {
      position: "top" as const, // legend 의 위치
    },
    title: {
      display: true,  // title 보일건지 말건지
      text: "Chart.js / react-chartjs-2 시작하기",
    },
  },
};

 

options안에 responsive를 true 하면, canvas 가 동적으로 반응한다. 반면 responsive를 false로 하게 되면, 고정적 너비를 가지게 된다.

 

작업을 하다 보면, 반응형으로 구현하게 될 상황이 있을 것이다.

그런데..... options 안에 responsive를 true로 주면 다음과 같이 축소는 되는데... 확대는 되지 않는다 🧐

 

 

공식문서에 나온 example로 사용해 봐도 같은 현상이 있다!! 😵

 

🌟  2) responsive를 false로 하고 직접 컨트롤하기

완벽하게 반응형을 구현하기 위해서는 resposive를 false로 두고 상위에서 canvas의 너비를 컨트롤하는 것이 좋을 것 같단 생각이 들었다.

다음과 같이 canvas를 div로 감싸주고, 동일한 비율로 canvas가 반응하게 하기 위하여 vw로 canvas에 값을 줘보자!!

const ChartJs = () => {
  return (
    <Container>
      <Bar options={options} data={data} />
    </Container>
  );
};
export default ChartJs;

const Container = styled.div`
  canvas {
    width: 50vw !important;
    height: 30vw !important;
  }
`;

👿 문제점!!

그러나 이렇게 canvas의 크기를 컨트롤하게 되면... tootip hover 나 클릭 이벤트가 제대로 동작하지 못하고 요소들의 위치를 잡지 못한다..

단순히 외관용으로 잡는 것이라면 위 방법대로, 아니라면 responsive:true를 만들어서 잡아주는 것이 좋다!

 

🌟  3) responsive: true로 조절하기

responsive로 올바르게 동작하게 하려면 코드를 다음과 같이 수정하면 된다.

const ChartJs = () => {
  return (
    <Container>
      <Bar options={options} data={data} />
    </Container>
  );
};
export default ChartJs;

const Container = styled.div`
  width: 50vw;
`;

'FE' 카테고리의 다른 글

[ChartJS / react-chartjs-2] mix형(bar/line) 차트 만들어보기 #4  (2) 2024.10.29
[ChartJS / react-chartjs-2] options 를 알아보기 #3  (0) 2024.10.29
[ChartJS / react-chartjs-2] 차트 라이브러리 설치, 기본 세팅하기 #1  (0) 2024.10.29
[React/Typescript] 트리구조 UI 구현하기 3. - 재귀함수 돌리기  (0) 2024.10.29
[React/Typescript] 트리구조 UI 구현하기 2. - Toggle animation  (0) 2024.10.29
  1. 🌟 1) 들어가기
  2. 🌟  2) responsive를 false로 하고 직접 컨트롤하기
  3. 👿 문제점!!
  4. 🌟  3) responsive: true로 조절하기
'FE' 카테고리의 다른 글
  • [ChartJS / react-chartjs-2] mix형(bar/line) 차트 만들어보기 #4
  • [ChartJS / react-chartjs-2] options 를 알아보기 #3
  • [ChartJS / react-chartjs-2] 차트 라이브러리 설치, 기본 세팅하기 #1
  • [React/Typescript] 트리구조 UI 구현하기 3. - 재귀함수 돌리기
웹개발주인장
웹개발주인장
안녕하세요 :) velog와 티스토리를 동시에 운영중에 있습니다! https://velog.io/@hannah3406
  • 웹개발주인장
    Hannah
    웹개발주인장
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • FE (17)
      • BE (10)
      • 개발CS (0)
      • 잡담 (0)
      • 토이프로젝트 (0)
  • 인기 글

  • 태그

    react
    Nextjs
    pm2
    nestjs
    GCP
    infinite scroll
    Nginx
    Google Cloud Platform
    무한스크롤
    gcp 도메인
    node.js
    google clioud platform
    트리구조
    TypeScript
    배포
    typscript
    WINDOWING
    HTTPS
    react-chartjs-2
    chartjs
    ssl 인증
    certbot
    scp명령어
    로드밸런서
    chartjs2
    다이어그램
    react-window
    chartjs click
    reactflow
    서버
  • hELLO· Designed By정상우.v4.10.0
웹개발주인장
[ChartJS / react-chartjs-2] 완벽한 반응형 차트를 구현해보자 #2

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.