Darstellung in der Canvas erscheint gestreckt
In verschiedenen Quellen wird darauf hingewiesen, dass Breite und Höhe der
Canvas als Attribute im HTML-Element anzugeben sind. Was passiert, wenn wir stattdessen die Maße über CSS angeben?
Wir entfernen die Attribute
width
und
height
aus dem Canvas-Element und geben dagegen im CSS-Bereich die Größen an:
canvas {
border: 1pt solid red;
width: 200px;
height: 200px;
}
|
|
Der Kreis erscheint jetzt wahrscheinlich als Ellipse, es könnte in verschiedenen
Browsern unterschiedlich aussehen. Die Ursache dürfte in der Definition eines abgebildeten Pixels liegen. Die Maße in CSS richten sich nach den Definitionen
zur Abbildung des HTML-Dokuments, während die Canvas genau quadratische Pixel
definieren muss, um eine Abbildung formgerecht zu zeigen.
Grafische Pixel sind nicht automatisch identisch mit den physischen Bildpunkten des Screens.
Das ganze Dokument als Canvas-02.html
zum Anschauen hier.
Ohne Höhenangabe ist die Abbildung wieder richtig
Wir entfernen die Angabe height: 200px;
aus dem CSS-Style der
Canvas und lassen nur die Breitenangabe stehen.
Interessant, dass die Canvas offenbar sich selbst eine Höhe gibt.
canvas {
border: 1pt solid red;
width: 200px;
}
|
|
Die Darstellung ist wieder korrekt, ggf. in anderer Größe.
Hier ging es nur darum, Effekte zu demonstrieren, keine alternativen
Wege. Breite und Höhe einer Canvas gibt man als Attribute
im canvas-Element an, dann hat man Größe, Breite und korrekte Darstellung
unter Kontrolle.