J'ai une toile html5. Je dois montrer la partie fixe de celui-ci dans la div (Div1
). Lorsque je glisse à l'intérieur de Div1
, je dois faire défiler la toile. Alors que je fais défiler, je vais voir la partie correspondante de la toile.
J'ai essayé quelque chose comme ça:
<div id="Div1" style=" float: left; width: 50px; overflow:hidden; ">
<canvas id="myCanvas1" width="200px" style="border: 1px solid #ff0000; position: absolute;">
</canvas>
</div>
J'espère que ça vous aidera
ça ne marchera pas (faire défiler la toile de l'intérieur de div dans certaines conditions de "conception"), d'abord votre débordement est masqué. Essayez de faire défiler le contenu à l'intérieur du canevas.
OU essayez ceci: http://jsfiddle.net/9g3GG/2/
<div id="Div1" style=" float: left; width: 150px; overflow:scroll; ">
<canvas id="myCanvas1" width="200" style="border:1px solid #ff0000;">asdf asd as asfqwe asd asdfasdf asd as asfqwe asd asdfasdf asd as asfqwe asd asdf</canvas>
</div>
Voici une démonstration de l’utilisation d’une grille surdimensionnée et du défilement de la souris en ajustant la marge CSS: https://jsfiddle.net/ax7n8944/
HTML:
<div id="canvasdiv" style="width: 500px; height: 250px; overflow: hidden">
<canvas id="canvas" width="10000px" height="250px"></canvas>
</div>
JS:
var canvas = document.getElementById("canvas");
var context = canvas.getContext('2d');
var dragging = false;
var lastX;
var marginLeft = 0;
for (var i = 0; i < 1000; i++) {
context.beginPath();
context.arc(Math.random() * 10000, Math.random() * 250, 20.0, 0, 2 * Math.PI, false);
context.stroke();
}
canvas.addEventListener('mousedown', function(e) {
var evt = e || event;
dragging = true;
lastX = evt.clientX;
e.preventDefault();
}, false);
window.addEventListener('mousemove', function(e) {
var evt = e || event;
if (dragging) {
var delta = evt.clientX - lastX;
lastX = evt.clientX;
marginLeft += delta;
canvas.style.marginLeft = marginLeft + "px";
}
e.preventDefault();
}, false);
window.addEventListener('mouseup', function() {
dragging = false;
}, false);
Il est préférable de faire défiler le canevas, voir ce plugin Phaser pour le faire https://jdnichollsc.github.io/Phaser-Kinetic-Scrolling-Plugin/
Les lignes de la div sont tracées. définir la taille de la ligne à 0:
DIVofCanvas {
line-height: 0px;
}