반응형 차트

창 크기를 기준으로 차트 크기를 변경하는 경우, 캔버스 렌더링 크기(canvas.width.height)를 디스플레이 크기(canvas.style.width.height)와 달리 상대 값으로 표현할 수 없다는 주요 제한 사항이 있습니다. 더욱이, 이 크기들은 각각에 독립적이므로 캔버스 렌더링 크기는 디스플레이 크기에 자동으로 맞출 수 없어, 렌더링 크기를 부정확하게 만듭니다.

다음의 예제들은 동작하지 않습니다:

  • <canvas height="40vh" width="80vw">: 올바르지 않은 값, 캔버스는 조정되지 않습니다 (예제)
  • <canvas style="height:40vh; width:80vw">: 올바르지 않은 행위, 캔버스는 조정되지만 모호해집니다 (예제)

Chart.js는 캔버스 디스플레이 크기가 변할 때와 그에 맞춰 렌더링 크기가 수정될 때를 탐지하여 차트의 크기 조정 동작들을 제어하고 반응할 수 있는 몇개의 옵션들을 제공합니다.

옵션 설정

이름 유형 기본 값 설명
responsive boolean true 컨테이너 크기가 재조정 될 때 차트 캔버스 크기를 조정합니다 (중요 사항...).
responsiveAnimationDuration number 0 크기 조정 이벤트가 발생한 뒤 새로운 크기를 위해 애니메이션을 동작시킬 밀리세컨드 시간을 지정합니다 .
maintainAspectRatio boolean true 크기가 조정될 때 원본 캔버스의 방향 비율을 유지합니다 (width / height) .
aspectRatio number 2 캔버스 방향 비율 (즉, width / height, 사각형 캔버스를 나타내는 1의 값). 이 옵션은 만약 높이가 스타일을 통해서나 속성을 통해 분명하게 정의되어 있으면 무시됨을 주의하세요.
onResize function null 크기 조정이 발생했을 때 불려집니다. 2개의 인자를 넘깁니다: 차트 인스턴스와 새로운 사이즈.

중요 사항

캔버스 크기가 변할 때 canvas 요소로 부터 직접 수행할 수 없을 때 감지합니다. Chart.js는 캔버스 렌더링디스플레이크기를 수정할 때 부모 컨테이너를 사용합니다. 그러나, 이 메소드는 상대적인 위치에 있는 컨테이너와 차트 캔버스에만 사용할 것을 요구합니다. 컨테이너 크기에 대한 상대적인 값에 설정하여 응답성을 얻을 수 있습니다 (예제):

<div class="chart-container" style="position: relative; height:40vh; width:80vw">
    <canvas id="chart"></canvas>
</div>

컨테이너 크기를 수정함으로 차트를 프로그래밍 적으로 크기 조정할 수 있습니다:

chart.canvas.parentNode.style.height = '128px';
chart.canvas.parentNode.style.width = '128px';

위의 코드에서 차트 높이의 재조정을 정확하게 하기 위해, maintainAspectRatio 옵션을 반드시 false로 설정해야 함을 주의하세요.

크기조정이 가능한 차트 그리기

CSS 미디어 쿼리는 페이지를 프린팅 할 때 스타일이 변경되는 것을 허용합니다. The CSS는 차트에 크기 조징이 필요할지도 모를 때 이 미디어 쿼리를 통해 적용합니다. 그러나, 크기조정은 자동으로 발생하지 않을 것입니다. 페이지를 그릴 때 크기가 조절되는 차트를 지원받기 위해선, onbeforeprint 이벤트와 수종으로 각각의 크기 조정 트리거의 연결이 필요합니다.

function beforePrintHandler () {
    for (var id in Chart.instances) {
        Chart.instances[id].resize();
    }
}

results matching ""

    No results matching ""