Después de una prueba rápida, no estoy seguro de que Chrome o Firefox incluso rendericen un lienzo tan grande. Mi apuesta sería crear un elemento canvas pero nunca agregarlo al DOM. Al igual que este:
var hiddenCanvas = document.createElement('canvas');
hiddenCanvas.width = 128000;
hiddenCanvas.height = 128000;
var hiddenContext = hiddenCanvas.getContext('2d');
A continuación, cree un lienzo más pequeño que en realidad se mostrará una parte de su lienzo oculto
<canvas width="something reasonable" height="something reasonable" id="viewCanvas"/>
y utilizar el método drawImage para dibujar porciones:
var viewCanvas = document.getElementById('viewCanvas');
var viewContext = viewCanvas.getContext('2d');
viewCanvasContext.drawImage(hiddenCanvas, 40, 50, viewCanvas.width, viewCanvas.height, 0, 0, viewCanvas.width, viewCanvas.height);
Entonces Depende de usted proporcionar los botones arriba/abajo/derecha/izquierda para navegar, o tal vez falsificar las barras de desplazamiento usando DIV de 20px de ancho que solo mostrarían barras de desplazamiento y en las que engancharía un desplazamiento incluso oyente en. Y cada vez que el usuario cambie de posición, realice nuevamente una llamada a drawImage, actualizando las posiciones x/y (40 y 50 en mi ejemplo).
Habiendo dicho esto, de nuevo, incluso cuando está oculto, dudo que los navegadores funcionen con un lienzo tan grande.
Estoy buscando una solución para el mismo problema, por lo que si en su investigación tiene suerte, por favor comparta.
Bueno, si el lienzo está dibujando la barra de desplazamiento, entonces realmente no será nativo. ¿Qué estás intentando lograr? –
Básicamente estoy buscando una forma de mostrar una barra de desplazamiento nativa de la que pueda capturar eventos de desplazamiento. :) – JohanShogun