[EDIT]只要看看我的答案,就可以学习如何滚动(或不滚动,取决于条形图宽度),如何使用锁定的y轴滚动,以及如何在条形图中显示文本,但在需要时使其垂直翻转。[结束编辑]
添加水平滚动的公认解决方案是执行以下操作:
将画布放入一个固定大小的div中。然后,将该div放入一个允许滚动的容器中。
好的,太好了。但是,在我真的需要滚动之前,我希望画布占据窗口高度和宽度的100%。我的意思是:
例如,以下是最初的建议:
<body style="height: 100%; width: 100%; overflow: hidden; margin: 0;">
<div id="canvas-wrapper" style="height: 100%; width: 100%; overflow-x: scroll; overflow-y: hidden;">
<div id="canvas-holder" style="height: 100%; width: 500px;" oncontextmenu="return false;">
<canvas id="myChart"></canvas>
</div>
</div>
</body>
http://jsfiddle.net/jmpxgufu/152/
当您查看这个jsfiddle时,您可以看到包装器已经将overflow-x设置为滚动,并且固定大小的div被设置为(随机)500px。因此,在jsfiddle中,如果您将输出窗口大小调整为小于500像素,它会添加滚动条(当然!),但当窗口大小大于500像素时,我只会在图表右侧获得空白。恶心。
所以,我在尝试一些事情,如果我有一些事件(在这里我使用了动画,onComplete事件),为我们调整它。我(随机)认为,如果条宽度低于14,我可以打开滚动:
<body style="height: 100%; width: 100%; overflow: hidden; margin: 0;">
<div id="canvas-wrapper" style="height: 100%; width: 100%; overflow-x: hidden; overflow-y: hidden;">
<div id="canvas-holder" style="height: 100%; width: 100%;" oncontextmenu="return false;">
<canvas id="myChart"></canvas>
</div>
</div>
</body>
http://jsfiddle.net/jmpxgufu/154/
这个问题是,一旦我从不滚动切换到滚动,动画事件就会停止触发(过去我移动窗口的每个像素都会触发这个事件)。因此,一旦我打开滚动,我就不能将其设置为不滚动。
如果该事件总是触发,在条大于14的情况下,我可以将其设置回不滚动。
其他人是怎么做到的?我不可能是唯一一个不想用图表固定的人——永远!
谢谢。
对于想要了解的人:
- 如何添加滚动和水平滚动chart.js图表
- 并让它以一定的条宽度动态显示(在本例中),否则就不会滚动(它适合窗口)
- 并且滚动的y轴不会在你开始滚动的那一秒消失(锁定的y轴)
- 并将文本居中显示在您的栏中
- 当条达到一定宽度时,此文本将垂直翻转
嗯。。。这里有一些代码可以查看!
<body style="height: 100%; width: 100%; overflow: hidden; margin: 0;">
<div id="chartWrapper" style="height: 100%; width: 100%;">
<div id="canvas-wrapper" style="height: 100%; width: 100%; overflow-x: hidden; overflow-y: hidden;">
<div id="canvas-holder" style="height: 100%; width: 100%;" oncontextmenu="return false;">
<canvas id="myChart" style="background-Color: white"></canvas>
</div>
</div>
<canvas id="myChartAxis" style="position: absolute; top: 0; left: 0; pointer-events: none; height: 100%; width: 0px; background-Color: white"></canvas>
</div>
</body>
http://jsfiddle.net/jmpxgufu/159/
(有一点需要注意:我不知道为什么,但当我发布我的代码时,我在开发时链接到了本地的chart.js库,并在本地进行了测试,在放入jsfiddle时,这些代码会给我带来所有类型的错误。因此,这段代码很快就被修改为可以工作——所以它可能并不完美,但会给你一些想法)