html5 canvas,溢出时添加滚动条

时间:2016-07-14 06:27:18

标签: javascript css html5 html5-canvas

你好,我有一个html画布,我想添加一个滚动条就像任何网页或textarea,我用overflow:scroll;但它只显示滚动条,它们被禁用(我无法滚动)

这是标记

<div class="ccsp-area">
    <canvas id="mainCanvas" width="900" height="500"></canvas>
</div>

这是css(scss)

 .ccsp-area {
   width: 90%;
   height: 100%;
   display: inline-block;
   canvas {
     display: inline-block;
     background-color: #fff;
     max-width: 100%   !important;
     overflow: scroll;
   }
 }

最后这是JS

var canvas = $("#mainCanvas");
var ctx = canvas[0].getContext('2d');
var targetSizeE = $(".ccsp-area");
var rwidth = targetSizeE.width() -200;
var rheight = targetSizeE.height() -80;
// no need to read more code after this stage
canvas.attr('width', rwidth);
canvas.attr('height', rheight);
ctx.beginPath();
ctx.moveTo(100 , 100);
ctx.lineTo(600, 600);
ctx.lineTo(600,100);
ctx.closePath();
ctx.lineWidth = 20;
ctx.strokeStyle = "rgba(10,220,50,1)";
ctx.fillStyle = "rgba(10,220,50,0.5)";
ctx.stroke();

结果的屏幕截图 result

正如您所看到的,滚动条被禁用,即使我在画布中有超过画布高度的绘图,我也无法滚动。

2 个答案:

答案 0 :(得分:0)

请参阅链接here

您可以单独设置overflow-xoverflow-y

查看有关MDN

溢出的详情

答案 1 :(得分:0)

正如那家伙所说,帆布没有内容溢出 所以最好的方法是将画布宽度和高度设置为非常大的可能2200 x 1500(你可以通过js改变高度)

这就是你的CSS应该是什么样的

.ccsp-area {
  width: 90%;
  height: 100%;
  display: inline-block;
  overflow: scroll;
  canvas {
    display: inline-block;
    background-color: #fff;
  }
}

根据您的情况设置html元素的大小而不是JS的大小(也可以随意删除设置画布大小的js代码)

<canvas id="mainCanvas" width="900" height="500"></canvas>