Chart.js在保持宽高比的同时更改窗口大小的高度

时间:2016-11-14 03:34:08

标签: javascript php jquery chart.js

我在调整chart.js画布大小时遇到​​了问题。 我将画布高度设置为160,以便在更宽的屏幕上看起来很好,但我需要在小屏幕上将高度更改为300,这样在保持宽高比的同时看起来不会显得狭窄。

此外,我想在条形图上添加一个onclick事件,这会导致链接通过其各自标签的月份。

非常感谢我的代码

<div>
<canvas id="chart1" width="500" height="300"></canvas>
</div>

<script>
var barLabel = <?php echo json_encode(array_reverse( $ch1_arrDate)); ?>;
var dataVal1 = <?php echo json_encode(array_reverse( $ch1_arrRevenue_conf)); ?>;
var barData = {
    labels: barLabel,
    datasets: [
        {
            label: 'Confirmed Revenue',
            backgroundColor: 'yellowgreen',
            data: dataVal1,

        },
    ]
};

var barOptions = { 
    responsive: true,
    maintainAspectRatio: true
}

var ctx = document.getElementById("chart1").getContext("2d");

if($(window).width()>748)
    ctx.canvas.height = 160;
else
    ctx.canvas.height = 300;

var chartDisplay = new Chart(ctx, {
    type: 'bar',
    data: barData,
    options: barOptions
});

$("#chart1").click( 
    function(evt){

    //supposed to when clicked goes to a linked href passing the month of the selected bar
    // e.g dummy.php?month_year=vardate
});

window.onresize = function() {

//the window.onresize works but i dont know how to resize the canvas while maintaining the aspect ratio.
if($(window).width()>748)
    ctx.canvas.height = 160; 
else
    ctx.canvas.height = 300;

chartDisplay.resize();
}
</script>

bar graph

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来重新调整图表的大小,再次加载它以刷新新的高度,这可能不是最好的做法。还找到了一种链接每个栏并将参数发送到另一个页面的方法。看下面的代码。

在我的dashboard.php中:

@Setter
map1.php中的

<script>
window.onresize=function(){
    $("#container").load("chart1.php");
}

$("#container").load("chart1.php");
</script>