Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Canvas is stretched when using CSS but normal with "width" / "height" properties

I have 2 canvases, one uses HTML attributes width and height to size it, the other uses CSS:

<canvas id="compteur1" width="300" height="300" onmousedown="compteurClick(this.id);"></canvas> <canvas id="compteur2" style="width: 300px; height: 300px;" onmousedown="compteurClick(this.id);"></canvas> 

Compteur1 displays like it should, but not compteur2. The content is drawn using JavaScript on a 300x300 canvas.

Why is there a display difference?

alt text

like image 593
Sirber Avatar asked Apr 06 '10 20:04

Sirber


People also ask

Does a canvas have CSS properties?

You can add CSS in Canvas like . You can not add css properties on drawn canvas instead , you can use Javascript to add effects into it.

What function do we use to get the width and height of the canvas?

You can get the width and height of a canvas element simply by accessing those properties of the element. For example: var canvas = document. getElementById('mycanvas'); var width = canvas.

How do you dynamically resize canvas?

Resizing the canvas on the fly is quite easy. To do it, simply set the width and height properties of the Canvas object, and then redraw the canvas contents: Canvas . width = 600 ; Canvas .

What is the default height and width of canvas area?

By default, the browser creates canvas elements with a width of 300 pixels and a height of 150 pixels. You can change the size of a canvas element by specifying the width and height attributes.


2 Answers

It seems that the width and height attributes determine the width or height of the canvas’s coordinate system, whereas the CSS properties just determine the size of the box in which it will be shown.

This is explained in the HTML specification:

The canvas element has two attributes to control the size of the element’s bitmap: width and height. These attributes, when specified, must have values that are valid non-negative integers. The rules for parsing non-negative integers must be used to obtain their numeric values. If an attribute is missing, or if parsing its value returns an error, then the default value must be used instead. The width attribute defaults to 300, and the height attribute defaults to 150.

like image 134
SamB Avatar answered Oct 03 '22 09:10

SamB


To set the width and height you need, you may use

canvasObject.setAttribute('width', '475'); 
like image 35
fermar Avatar answered Oct 03 '22 08:10

fermar