tag rotate attribute javascript html5 canvas

javascript - rotate - title html css



HTML Canvas Pantalla completa (13)

A - Cómo calcular el ancho y la altura de la pantalla completa

Aquí están las funciones;

canvas.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; canvas.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

Mira esto

B - Cómo hacer que la pantalla completa sea estable con el tamaño

Aquí está el método de cambio de tamaño para el evento de cambio de tamaño;

function resizeCanvas() { canvas.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; canvas.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; WIDTH = canvas.width; HEIGHT = canvas.height; clearScreen(); }

C - Cómo deshacerse de las barras de desplazamiento

Simplemente;

<style> html, body { overflow: hidden; } </style>

D - Código de demostración

<html> <head> <title>Full Screen Canvas Example</title> <style> html, body { overflow: hidden; } </style> </head> <body onresize="resizeCanvas()"> <canvas id="mainCanvas"> </canvas> <script> (function () { canvas = document.getElementById(''mainCanvas''); ctx = canvas.getContext("2d"); canvas.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; canvas.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; WIDTH = canvas.width; HEIGHT = canvas.height; clearScreen(); })(); function resizeCanvas() { canvas.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; canvas.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; WIDTH = canvas.width; HEIGHT = canvas.height; clearScreen(); } function clearScreen() { var grd = ctx.createLinearGradient(0,0,0,180); grd.addColorStop(0,"#6666ff"); grd.addColorStop(1,"#aaaacc"); ctx.fillStyle = grd; ctx.fillRect( 0, 0, WIDTH, HEIGHT ); } </script> </body> </html>

Estoy jugando con la siguiente aplicación usando el lienzo HTML: http://driz.co.uk/particles/

Por el momento está configurado en 640x480 píxeles, pero me gustaría hacerlo en pantalla completa, ya que se mostrará un proyector. Sin embargo, por lo que puedo decir, no puedo establecer que el tamaño del lienzo sea 100% como las variables solo, excepto los números y no el%. Usar CSS simplemente lo estira en lugar de hacerlo a pantalla completa real.

¿Algunas ideas?

EDITAR: Intenté encontrar el alto y el ancho usando jQuery pero rompe el lienzo, ¿por qué alguna idea?

var $j = jQuery.noConflict(); var canvas; var ctx; var canvasDiv; var outerDiv; var canvasW = $j(''body'').width(); var canvasH = $j(''body'').height(); //var canvasW = 640; //var canvasH = 480; var numMovers = 550; var movers = []; var friction = .96; var radCirc = Math.PI * 2; var mouseX, mouseY, mouseVX, mouseVY, prevMouseX = 0, prevMouseY = 0; var isMouseDown = true; function init() { canvas = document.getElementById("mainCanvas"); if( canvas.getContext ) { setup(); setInterval( run , 33 ); } } function setup() { outerDiv = document.getElementById("outer"); canvasDiv = document.getElementById("canvasContainer"); ctx = canvas.getContext("2d"); var i = numMovers; while( i-- ) { var m = new Mover(); m.x = canvasW * .5; m.y = canvasH * .5; m.vX = Math.cos(i) * Math.random() * 25; m.vY = Math.sin(i) * Math.random() * 25; m.size = 2; movers[i] = m; } document.onmousedown = onDocMouseDown; document.onmouseup = onDocMouseUp; document.onmousemove = onDocMouseMove; } function run() { ctx.globalCompositeOperation = "source-over"; ctx.fillStyle = "rgba(8,8,12,.65)"; ctx.fillRect( 0 , 0 , canvasW , canvasH ); ctx.globalCompositeOperation = "lighter"; mouseVX = mouseX - prevMouseX; mouseVY = mouseY - prevMouseY; prevMouseX = mouseX; prevMouseY = mouseY; var toDist = canvasW / 1.15; var stirDist = canvasW / 8; var blowDist = canvasW / 2; var Mrnd = Math.random; var Mabs = Math.abs; var Msqrt = Math.sqrt; var Mcos = Math.cos; var Msin = Math.sin; var Matan2 = Math.atan2; var Mmax = Math.max; var Mmin = Math.min; var i = numMovers; while( i-- ) { var m = movers[i]; var x = m.x; var y = m.y; var vX = m.vX; var vY = m.vY; var dX = x - mouseX; var dY = y - mouseY; var d = Msqrt( dX * dX + dY * dY ); var a = Matan2( dY , dX ); var cosA = Mcos( a ); var sinA = Msin( a ); if( isMouseDown ) { if( d < blowDist ) { var blowAcc = ( 1 - ( d / blowDist ) ) * 2; vX += cosA * blowAcc + .5 - Mrnd(); vY += sinA * blowAcc + .5 - Mrnd(); } } if( d < toDist ) { var toAcc = ( 1 - ( d / toDist ) ) * canvasW * .0014; vX -= cosA * toAcc; vY -= sinA * toAcc; } if( d < stirDist ) { var mAcc = ( 1 - ( d / stirDist ) ) * canvasW * .00022; vX += mouseVX * mAcc; vY += mouseVY * mAcc; } vX *= friction; vY *= friction; var avgVX = Mabs( vX ); var avgVY = Mabs( vY ); var avgV = ( avgVX + avgVY ) * .5; if( avgVX < .1 ) vX *= Mrnd() * 3; if( avgVY < .1 ) vY *= Mrnd() * 3; var sc = avgV * .45; sc = Mmax( Mmin( sc , 3.5 ) , .4 ); var nextX = x + vX; var nextY = y + vY; if( nextX > canvasW ) { nextX = canvasW; vX *= -1; } else if( nextX < 0 ) { nextX = 0; vX *= -1; } if( nextY > canvasH ) { nextY = canvasH; vY *= -1; } else if( nextY < 0 ) { nextY = 0; vY *= -1; } m.vX = vX; m.vY = vY; m.x = nextX; m.y = nextY; ctx.fillStyle = m.color; ctx.beginPath(); ctx.arc( nextX , nextY , sc , 0 , radCirc , true ); ctx.closePath(); ctx.fill(); } //rect( ctx , mouseX - 3 , mouseY - 3 , 6 , 6 ); } function onDocMouseMove( e ) { var ev = e ? e : window.event; mouseX = ev.clientX - outerDiv.offsetLeft - canvasDiv.offsetLeft; mouseY = ev.clientY - outerDiv.offsetTop - canvasDiv.offsetTop; } function onDocMouseDown( e ) { isMouseDown = true; return false; } function onDocMouseUp( e ) { isMouseDown = true; return false; } // ========================================================================================== function Mover() { this.color = "rgb(" + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + "," + Math.floor( Math.random()*255 ) + ")"; this.y = 0; this.x = 0; this.vX = 0; this.vY = 0; this.size = 0; } // ========================================================================================== function rect( context , x , y , w , h ) { context.beginPath(); context.rect( x , y , w , h ); context.closePath(); context.fill(); } // ==========================================================================================



El javascript tiene

var canvasW = 640; var canvasH = 480;

en eso. Intenta cambiar esos y el CSS para el lienzo.

O mejor aún, haga que la función de inicialización determine el tamaño del lienzo del css.

en respuesta a sus ediciones, cambie su función init:

function init() { canvas = document.getElementById("mainCanvas"); canvas.width = document.body.clientWidth; //document.width is obsolete canvas.height = document.body.clientHeight; //document.height is obsolete canvasW = canvas.width; canvasH = canvas.height; if( canvas.getContext ) { setup(); setInterval( run , 33 ); } }

También elimine todo el CSS de las envolturas, que simplemente desempolva cosas. Sin embargo, tienes que editar el js para deshacerse de ellos por completo ... Sin embargo, pude obtenerlo a pantalla completa.

html, body { overflow: hidden; }

Editar : document.width y document.height están obsoletos . Reemplace con document.body.clientWidth y document.body.clientHeight


En la carga del documento establece el

canvas.width = window.innerWidth; canvas.height = window.innerHeight;


Espero que sea útil.

// Get the canvas element var canvas = document.getElementById(''canvas''); var isInFullScreen = (document.fullscreenElement && document.fullscreenElement !== null) || (document.webkitFullscreenElement && document.webkitFullscreenElement !== null) || (document.mozFullScreenElement && document.mozFullScreenElement !== null) || (document.msFullscreenElement && document.msFullscreenElement !== null); // Enter fullscreen function fullscreen(){ if(canvas.RequestFullScreen){ canvas.RequestFullScreen(); }else if(canvas.webkitRequestFullScreen){ canvas.webkitRequestFullScreen(); }else if(canvas.mozRequestFullScreen){ canvas.mozRequestFullScreen(); }else if(canvas.msRequestFullscreen){ canvas.msRequestFullscreen(); }else{ alert("This browser doesn''t supporter fullscreen"); } } // Exit fullscreen function exitfullscreen(){ if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); }else{ alert("Exit fullscreen doesn''t work"); } }


Los últimos Chrome y Firefox son compatibles con una API de pantalla completa, pero configurar en pantalla completa es como cambiar el tamaño de la ventana. Escuche el onresize-Event del window-object:

$(window).bind("resize", function(){ var w = $(window).width(); var h = $(window).height(); $("#mycanvas").css("width", w + "px"); $("#mycanvas").css("height", h + "px"); }); //using HTML5 for fullscreen (only newest Chrome + FF) $("#mycanvas")[0].webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); //Chrome $("#mycanvas")[0].mozRequestFullScreen(); //Firefox //... //now i want to cancel fullscreen document.webkitCancelFullScreen(); //Chrome document.mozCancelFullScreen(); //Firefox

Esto no funciona en todos los navegadores. Debería verificar si las funciones existen o lanzará un error js.

para obtener más información sobre html5-fullscreen revisa esto: http://updates.html5rocks.com/2011/10/Let-Your-Content-Do-the-Talking-Fullscreen-API


Obtenga el ancho y el alto completos de la pantalla y cree un nuevo conjunto de ventanas con el ancho y alto apropiados, y con todo desactivado. Cree un lienzo dentro de esa nueva ventana, establezca el ancho y alto del lienzo con el ancho - 10px y la altura - 20px (para permitir la barra y los bordes de la ventana). Luego trabaja tu magia en ese lienzo.


Porque no se publicó aún y es una solución simple de CSS:

#canvas { position:fixed; left:0; top:0; width:100%; height:100%; }

Funciona muy bien si desea aplicar un fondo de lienzo a pantalla completa (por ejemplo, con Granim.js).


Puede insertar lo siguiente en su página html principal, o una función:

canvas.width = window.innerWidth; canvas.height = window.innerHeight;

Eso debería hacer el trabajo


Simplemente podría capturar eventos de cambio de tamaño de ventana y establecer el tamaño de su lienzo para que sea la ventana gráfica del navegador.


Todo lo que necesita hacer es establecer los atributos de ancho y alto para que sean del tamaño del lienzo, dinámicamente. Entonces usas CSS para extenderlo en toda la ventana del navegador, luego tienes una pequeña función en javascript que mide el ancho y el alto, y los asigna. No soy terriblemente familiar con jQuery, así que considere este psuedocode:

window.onload = window.onresize = function() { theCanvas.width = theCanvas.offsetWidth; theCanvas.height = theCanvas.offsetHeight; }

Los atributos de ancho y alto del elemento determinan cuántos píxeles utiliza en su búfer de renderizado interno. Cambiarlos a números nuevos hace que el lienzo se reinicie con un búfer en blanco de diferentes tamaños. El navegador solo estirará los gráficos si los atributos de ancho y alto no concuerdan con el ancho y el alto real del píxel del mundo real.


es simple, configure el ancho y la altura del lienzo en screen.width y screen.height. luego presiona F11! Creo que F11 debería hacer pantalla completa en la mayoría de los navegadores en FFox e IE.


function resize() { canvas.width = window.innerWidth; canvas.height = window.innerHeight; render(); } window.addEventListener(''resize'', resize, false); resize(); function render() { // draw to screen here }

https://jsfiddle.net/jy8k6hfd/2/