用于画布的垂直滚动条,在html5中添加动态内容

时间:2013-03-04 09:20:33

标签: html5 scrollbar easeljs

我有一个高度为480的画布。我正在使用Easeljs在画布中加载图像。每行包含3个图像。加载超出画布高度(480)的图像被隐藏。我需要添加垂直滚动条来查看这些图像。我该如何实现呢。

感谢,
沙迪亚

3 个答案:

答案 0 :(得分:4)

以下是如何向画布添加垂直滚动条,以允许在较大的图像上向上/向下滚动:http://jsfiddle.net/m1erickson/a9KDB/

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>

<style>
body{ background-color: ivory; }
div, canvas {
    position:absolute;
}
.wrapper {
    top:10px;
    left:10px;
    width: 300px;
    height: 300px;
    border: 2px solid black;
    margin:30px 0 2;
    overflow: hidden;
    background-color:green;
}
.vertical-scroll {
    left:320px;
    top:10px;
    border: 1px solid green;
    width: 20px;
    height: 300px;
}
.vertical-scroll div.bar {
    left:0px;
    top:0px;
    width: 20px;
    background-color: blue;
    height: 20px;
}
#mycanvas {
    left:0px;
    top:0px;
}

</style>

<script>
    $(function(){

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

        var wrapper;
        var canvasHeight;
        var vScrollHeight;
        var canvasWrapperHeight=300;

        $(".bar").draggable({
            containment: "parent"
        });

        $(".bar").on("drag", function (event, ui) {
            var ctop=(-ui.position.top * canvasHeight / canvasWrapperHeight);
            canvas.style.top = ctop + "px"
        });

        var img=new Image();
        img.onload=function(){
          canvas.width=this.width;
          canvas.height=this.height;
          canvasHeight=this.height;
          vbarHeight=canvasWrapperHeight*canvasWrapperHeight/canvasHeight;
          document.getElementById("vbar").style.height=vbarHeight+"px";
          ctx.drawImage(this,260,0,300,this.height,0,0,300,this.height);
        }
        img.src="http://sciencedude.blog.ocregister.com/files/2008/02/zot1-copy.jpg";

    }); // end $(function(){});
</script>

</head>

<body>
    <div class="wrapper" id="wrap1">
        <canvas id="mycanvas" width="300px" height="300px" />
    </div>
    <div class="vertical-scroll" id="vscroll">
        <div class="bar" id="vbar"></div>
    </div>
 </body>
</html>

答案 1 :(得分:1)

用div包装画布,然后为div设置高度,最后将overflow-y:autooverflow-x: hidden属性应用于div。

overflow-y:auto会在需要时显示垂直滚动条 overflow-x: hidden隐藏水平滚动条

http://jsfiddle.net/V92Gn/3509/

   <div style="height:200px;width:480px; overflow-y:auto;overflow-x: hidden;">
      <canvas id="canvas" style="background:navy" width="480" height="820"></canvas>
    </div>

答案 2 :(得分:0)

我不知道任何针对EaselJS的ScrollBar-Solutions,并且不可能通过HTML实现这一点。 因此,您必须编写自己的滚动条代码,如果您遇到问题,应该有很多教程可以在线找到ActionScript3,您可以轻松地为EaselJS调整这些教程。

另一种选择是扩展画布本身的高度并向其父容器添加滚动条,我不确定这是否是一个非常好的解决方案。