javascript - 使用媒体查询从 Chart.js 中删除标签(或更改选项值)

标签 javascript django chart.js

我正在使用 Django,并且在 View 中有一个条形图,如下所示:

index.html

<script>
    $(document).ready(function(){
        var ctx = document.getElementById('pollingBarChart');
        var myChart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: [{% for c in categories %}"{{ c.name }}",{% endfor %}],
                datasets: [{
                    label: '# of Votes',
                    data: [{% for a in active_votes %}
                            {{ a }},
                            {% endfor %}],
                }]
            },
            options: {
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero: true,
                            fontColor: 'white',
                            callback: function(value) {if (value % 1 === 0)
                                {return value;}}
                        }
                    }],
                    xAxes: [{
                        ticks: {
                            fontColor: 'white',
                            fontSize: 12,

                        }
                    }],
                },
                legend: {
                    labels: {
                        fontColor: 'white'
                    },
                },

            }
        });

    });
</script>

我发现我可以将 xAxes -> ticks -> fontSize 设置为 0 来实现我正在寻找的目标,但是我无法弄清楚如何更改它通过媒体查询将值设置为 0。

我仍在学习 JavaScript,所以不确定解决这个问题的最佳方法。我发现的一种可能性是使用 window.matchMedia("(max-width: 756px)") 并添加一个监听器。但我没能让它发挥作用。

任何帮助将不胜感激。谢谢。

最佳答案

如果媒体查询有效,那将是一个好主意,但我不知道。

我有一个 chart.js 解决方案,但我不知道这是否是您想要的。现在,如果图表区域足够小,我会完全删除刻度线(包括网格线)。如果您只是想隐藏刻度线,则需要像我在评论的行中所做的那样稍微调整代码。

完整代码:https://jsbin.com/lifubiriye/edit?js,output

重要部分:

function setChartWidth() {
  chartWidth = document.getElementById("chart").width

  if (chartWidth < 756) {
    myChart.options.scales.xAxes[0].display = false
  } else {
    myChart.options.scales.xAxes[0].display = true    
  }  
}

关于javascript - 使用媒体查询从 Chart.js 中删除标签(或更改选项值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59701085/

相关文章:

javascript - 从 JSON 对象数组文件中创建一个新的 JSON 字符串 - 不包含不包含 img URL 的对象

python - 属性错误 : 'cStringIO.StringO' object has no attribute 'fileno' when using django-imagekit

python - Django 动态获取 View url 并检查其是否为当前页面

django - 部署单独的 React 前端和 Django DRF API

javascript - 水平对齐 Chart.js y 轴

javascript - 使用 chart.js 混合图表散点图

javascript - 误解了 jQuery 的 "undefined"技巧?

javascript - 动态传递路径值Javascript

javascript - Chart.js - 同一 Canvas 上的多个圆环图

javascript - 将 getElementById() 与 bgcolor 属性一起使用