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

2024. 10. 29. 16:47·FE

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

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

티스토리툴바