Per <canvas>
elementi, le regole CSS per width
e height
impostare la dimensione effettiva dell'elemento canvas che verrà utilizzata per la pagina. D'altra parte, gli attributi HTML di width
e height
impostano la dimensione del sistema di coordinate o "griglia" che verrà utilizzata dall'API Canvas.
Ad esempio, si consideri questo (jsfiddle):
var ctx = document.getElementById('canvas1').getContext('2d');
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 30, 30);
var ctx2 = document.getElementById('canvas2').getContext('2d');
ctx2.fillStyle = "red";
ctx2.fillRect(10, 10, 30, 30);
canvas {
border: 1px solid black;
}
<canvas id="canvas1" style="width: 50px; height: 100px;" height="50" width="100"></canvas>
<canvas id="canvas2" style="width: 100px; height: 100px;" height="50" width="100"></canvas>
Entrambi hanno avuto la stessa cosa disegnata sopra una relativa alle coordinate interne dell'elemento tela. Ma nella seconda tela, il rettangolo rosso sarà due volte più largo perché la tela nel suo complesso viene allungata su una superficie più grande dalle regole CSS.
Nota: Se le regole CSS per width
e/o height
non vengono specificati il browser utilizzerà il attributi HTML a misura l'elemento in modo tale che 1 unità di questi valori è uguale 1px sulla pagina.Se questi attributi non sono specificati, verranno impostati su un valore width
di 300
e uno height
di 150
.
anzi .. Ho sempre pensato attributi diretti come "larghezza" e "altezza" stati deprecati nelle recenti versioni html .. – Sirber
Oh, a quanto pare in realtà è descritto piuttosto bene a http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#attr-canvas- larghezza (sezione '# attr-canvas-width'). Il problema è che ho cliccato su 'width' errato prima e sono andato invece alla sezione' # dom-canvas-width'. Archiviato http://www.w3.org/Bugs/Public/show_bug.cgi?id=9469 su di esso. – SamB
mi hai salvato un terribile mal di testa .... grazie! – nurxyz