Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta charset="utf-8" />
  6. <title>Canvas Scrolling</title>
  7. <style>
  8.  
  9. </style>
  10. </head>
  11.  
  12. <body>
  13. <style>
  14. canvas {
  15. border: 1px solid gray;
  16. padding: 2px;
  17. /* cursor: pointer; */
  18. }
  19. </style>
  20.  
  21. <canvas id="canvas" width="20px" height="512px"></canvas>
  22. <span>position: </span>
  23. <span id="position">0 </span>
  24. <span>&nbsp;</span>
  25. <span>value: </span>
  26. <span id="value">0 </span>
  27.  
  28. <script>
  29. var canvas = document.getElementById('canvas');
  30. var ctx = canvas.getContext('2d');
  31. ctx.clearRect(0, 0, canvas.width, canvas.height);
  32.  
  33. var width = 20;
  34. var height = 500;
  35. var scrollbarSize = 20;
  36. var max = 100;
  37. var drag = false;
  38. var value = 0;
  39. var positionY = 0;
  40.  
  41. function drawScrollbarInFrame() {
  42. console.log("drawScrollbarInFrame: positionY=" + positionY);
  43. window.requestAnimationFrame(drawScrollbar);
  44. }
  45.  
  46. function drawScrollbarByValue(value) {
  47. positionY = ((height - scrollbarSize) / max) * value;
  48. drawScrollbarInFrame();
  49. }
  50.  
  51. function drawScrollbar() {
  52. ctx.clearRect(0, 0, canvas.width, canvas.height);
  53. ctx.fillStyle = '#aaa';
  54. ctx.fillRect(0, positionY, width, scrollbarSize);
  55.  
  56. drawPosition();
  57. }
  58.  
  59. function drawPosition() {
  60. value = Math.ceil(max / height * positionY);
  61.  
  62. var positionEl = document.getElementById('position');
  63. positionEl.innerHTML = positionY;
  64.  
  65. var valueEl = document.getElementById('value');
  66. valueEl.innerHTML = value;
  67. }
  68.  
  69. function onMouseDown(event) {
  70. //console.log("mouseDown");
  71. ctx.clearRect(0, 0, canvas.width, canvas.height);
  72. drag = true;
  73. }
  74.  
  75. function onMouseUp(event) {
  76. console.log("mouseUp");
  77. drag = false;
  78. }
  79.  
  80. function onMouseMove(event) {
  81. if (!drag) {
  82. return;
  83. }
  84. positionY = event.pageY;
  85. drawScrollbarInFrame();
  86. }
  87.  
  88. function onMouseWheel(event) {
  89. //console.log("mouseWheel=", event);
  90.  
  91. // Invert can be done here?
  92. var delta = 1;
  93. if (event.deltaY < 0) {
  94. delta = 1;
  95. } else {
  96. delta *= -1;
  97. }
  98.  
  99. positionY = positionY - delta;
  100. drawScrollbarInFrame();
  101.  
  102. return false;
  103. }
  104.  
  105. canvas.addEventListener('mousedown', onMouseDown, false);
  106. canvas.addEventListener('mouseup', onMouseUp, false);
  107. canvas.addEventListener('mousemove', onMouseMove, false);
  108. canvas.addEventListener('wheel', onMouseWheel, false);
  109.  
  110. // initial draw with value of 0
  111. drawScrollbarByValue(0);
  112. </script>
  113.  
  114. </body>
  115.  
  116. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement