HTML-Tutorium: SVG: Hello World 02: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Kowa (Diskussion | Beiträge)
Zeile 63: Zeile 63:
sollte vermieden werden, da es bei Änderung der Bühnengröße zu Inkonsitenzen kommen kann
sollte vermieden werden, da es bei Änderung der Bühnengröße zu Inkonsitenzen kommen kann
(wenn die Größe versehentlich nur an einer Stelle geändert wird). Code-Verdopplung sollte
(wenn die Größe versehentlich nur an einer Stelle geändert wird). Code-Verdopplung sollte
sowieso stets vermieden werden (siehe [[Programmierprinzip#Don.27t_repeat_yourself.2C_DRY.5B4.5D|Programmierprinzip  „Don't repeat yourself“ (Dry)]]).
gemäß dem [[Programmierprinzip#Don.27t_repeat_yourself.2C_DRY.5B4.5D|Programmierprinzip  „Don't repeat yourself“ (Dry)]]
sowieso stets vermieden werden.


In der Version 4 des SVG-Hello-World-Tutoriums kann dieses Problem recht elegant gelöst werden.
In der Version 4 des SVG-Hello-World-Tutoriums kann dieses Problem recht elegant gelöst werden.
Zeile 73: Zeile 74:
</source>
</source>


Bei der Erzeugung der Raphaël-Bühne wird die Größe des zugehörigen <code>div</code>-Containers
Bei der Formatierung der Raphaël-Bühne (Hervorhebung des Randes) wird die Größe des zugehörigen  
nicht mehr mittels CSS sondern mittels JavaScript (genauer: jQuery) unter Rückgriff auf diese beiden
<code>div</code>-Containers nicht mehr mittels statischem CSS sondern mittels JavaScript (genauer: jQuery)
Konstanten festgelegt:
unter Rückgriff auf diese beiden Konstanten festgelegt:


<source lang="javascript">
<source lang="javascript">

Version vom 10. Oktober 2012, 08:56 Uhr

Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen:

Korrektheit: 4
(großteils überprüft)
Umfang: 4
(unwichtige Fakten fehlen)
Quellenangaben: 5
(vollständig vorhanden)
Quellenarten: 5
(ausgezeichnet)
Konformität: 4
(sehr gut)

HTML-Tutorium Hello World: JavaScript | Canvas | SVG

Inhalt | Teil 1 | Teil 2

Ergebnis: hallo.html

(SVN-Repositories: Pendant zu Teil 2 des Canvas-Tutoriums, Pendant zu Teil 3, Pendant zu Teil 4)

HTML5: Hello-<name>-Anwendung mit Raphaël (SVG)

Die in HTML-Tutorium: SVG: Hello World 01 erstellte Hello-World-Anwendung wird so umgeschrieben, dass ein Benutzer seinen Namen eingeben kann und er nach Klick auf den OK-Button mit seinem Namen begrüßt wird.

Gehen Sie bei der Erweiterung der SVG-Hello-World-Anwendung genauso vor, wie bei der Erweiterung der Canvas-Hello-World-Anwendung. Das heißt, befolgen Sie die Anweisungen der Tutorien

ersetzen dabei aber jedes Mal den Canvas-Code durch einen äquivalenten SVG-Code.

Wenn Sie beim Erzeugen des SVG-Codes Probleme haben sollten, können Sie in den SVG-Musterlösungen spicken:

Ein kleiner Optimierungstipp

Die Größe des Canvas muss nur an einer Stelle festgelegt werden, bei der Erzeugung des Canvas-Objektes:

  v_canvas        = document.getElementById("d_canvas");
  v_canvas.width  = 300;
  v_canvas.height =  27;

In Raphaël muss die Größe dagegen an zwei Stellen angegeben werden. Bei der Erzeugung der Bühne

  v_canvas = new Raphael("d_canvas", 300, 27);

sowie in einer CSS-Datei (z.B. bei der Festlegung des Layouts der Umrandung ):

#d_canvas
{
  width:        300px;
  height:       27px;

  ...
}

Der Grund dafür ist, dass in HTML5 zwar ein spezielles canvas-Element existiert, aber kein spezielles svg-Element. Ersatzweise wird in Raphaël daher ein div-Element verwendet, dessen Größe dann allerdings via CSS explizit festgelegt werden muss.

Die Definition der Größe einer Raphaël-Bühne an zwei unterschiedlichen Stellen sollte vermieden werden, da es bei Änderung der Bühnengröße zu Inkonsitenzen kommen kann (wenn die Größe versehentlich nur an einer Stelle geändert wird). Code-Verdopplung sollte gemäß dem Programmierprinzip „Don't repeat yourself“ (Dry) sowieso stets vermieden werden.

In der Version 4 des SVG-Hello-World-Tutoriums kann dieses Problem recht elegant gelöst werden. Die Größe der Bühne wird in der JavaScript-Datei CONSTANT.js festgelegt:

var CANVAS_WIDTH  = 300; 
var CANVAS_HEIGHT =  27;

Bei der Formatierung der Raphaël-Bühne (Hervorhebung des Randes) wird die Größe des zugehörigen div-Containers nicht mehr mittels statischem CSS sondern mittels JavaScript (genauer: jQuery) unter Rückgriff auf diese beiden Konstanten festgelegt:

  v_canvas = new Raphael("d_canvas", CANVAS_WIDTH, CANVAS_HEIGHT); 
  $("#d_canvas")
    .css ({"width":  CANVAS_WIDTH,
           "height": CANVAS_HEIGHT,
          });

Quellen

  1. Kowarschick (MMProg): Wolfgang Kowarschick; Vorlesung „Multimedia-Programmierung“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2018; Quellengüte: 3 (Vorlesung)