|
Autor: Ich www.friedels-home.de | IE 5 | IE 6 | NN 6 | NN 7 | Moz 1 | OP 6 | OP 7 |
Der Grundgedanke dieses Scripts ist folgender:
Man macht eine Html-Seite in der eine Tabelle ist, die nur eine Zelle hat.
In der Tabelle ist links oben ein Bild das rechts vom Text umflossen wird. Das Bild wird zunächst in Originalgröße angezeigt.
Jetzt wird durch das Script die Breite und die Höhe des Bildes bestimmt. Außerdem wird die innere Breite und die innere Höhe
des Fensters bestimmt. Dann wird das Verhältnis aus Bildbreite zu Bildhöhe bestimmt und das Verhältnis aus Fensterbreite zu
Fensterhöhe. Wenn ersteres Verhältnis gößer als das zweite ist (breites Bild in hohem Fenster), wird der Text unter dem Bild
angeordnet. Ansonsten bleibt es dabei, dass der Text rechts neben dem Bild ist. Falls das Bild kleiner ist als das Fenster wird
es erst man vergrößert damit es sicher zu groß ist. Dann wird es so lange verkleinert bis die Tabelle nicht breiter und nicht
höher als das Fenster ist. Dann wird noch geprüft, ob die Tabelle so Breit ist wie das Fenster. Wenn sie wesentlich schmaler
ist wird sie auf Fensterbreite vergrößert. Das ist notwendig wenn das Bid hoch und schmal ist und auf der Seite wenig Text ist.
Sonst würde rechts neben dem Bild nur eine Schmale Spalte Text stehen.
Es folgt der Quellcode der Seite, die du sehen kannst wenn du auf "Demo" klickst. Danach kommt die Erklärung dazu. Damit du leichter erkennen kannst worauf sich die einzelnen Teile der Erklärung beziehen sind Teile des Quellcodes farbig hinterlegt. Die Erklärungen sind dann in der gleichen Farbe hinterlegt wie der Quellcode auf den sich der jeweilige Text bezieht.
|
Natürlich wird alles in eine ganz normale, leere Html-Seite eingebaut. Der Body der Seite enthält nichts weiter als eine Tabelle, die nur aus einer Zelle besteht. Damit die Tabelle durch das Script angesprochen werden kann erhält sie das Attribut name="tabelle". In diese Tabelle kommt das Bild und der Text. Das Bild wird links ausgerichtet, hat keinen Rahmen und hat den Namen "bild".
Die Bildausrichtung und die Bildgröße wird mit einer Funktion geändert. Die Funktion kommt
in einen Scriptbereich in den Head der Seite. Bevor die Funktion definiert wird,
werden erst mal die benötigten Variablen definiert. Die Variaben haben folgenden Zweck:
Variable Zweck
fb Fensterbreite
fh Fensterhöhe
bb Bildbreite
bh Bildhöhe
bv Verhältnis aus Bildbreite zur Bildhöhe
tb Tabellenbreite
th Tabellenhöhe
a Solange a=0 muss das Bild noch verkleinert werden.
b Solange b=0 muss noch geprüft werden ob das Bild vergrößert werden muss.
Die Bildgröße kann man natürlich erst feststellen wenn das Bild geladen ist. Deshalb wird das in der Funktion init() gemacht und diese Funktion wird durch onLoad="init()" im Bodytag aufgerufen. In der Funktion wird also erst mal die Bildbreite und -höhe bestimmt und in den Variablen bb und bh gespeichert. Dann wird das Verhältnis Breite/Höhe in bv gespeichert. Bildbreite und -höhe werden in der Folge noch des öfteren neu bestimmt, aber bv bleibt so wie es ist. Sonst würde das Bild durch Rundungsfehler mit jedem Berechnungsschritt mehr verzerrt werden. Nachdem bv feststeht wird die Funktion bild() aufgerufen.
Diese Funktion wird im Laufe der Berechnung mehrmals aufgerufen. Wenn der Aufruf nicht aus init() erfolgt kann es natürlich
sein, dass sich die Breite und Höge des Bildes geändert hat. Also wird erst mal bb
und bh neu bestimmt. Leider gibt es keine Methode fest zu stellen wie viel Platz
in einem Fenster ist, die in allen Browsern funktioniert. Im Netscape Navigator und Mozilla ist window.innerWidth und die innere
Breite des Fensters. Opera und der Internet Explorer kennen window.innerWidth nicht. Aber in diesen Browsern kann man mit
Danach wird die Funktion kleiner() aufgerufen. Das ist die Funktion, die das schrittweise Verkleinern übernimmt.Es wird geprüft ob das Bild verkleinert werden muss. Das Bild befindet sich zusammen mit dem Text in einer Tabelle. Wenn diese Tabelle breiter oder höher als das Fenster ist wird das Bild verkleinert. Aber nur wenn das Bild nicht schon weniger als 100 Pixel breit ist. Schließlich soll man ja noch etwas erkennen können. Wenn bei einer Bildbreite von 100 Pixel immer noch nicht alles ins Fenster passt wird das Verkleinern abgebrochen. Wenn die Bedingungen zum Verkleinern erfüllt sind, wird die Bildbreite auf 98% reduziert und dann 30 Pixel abgezogen. Dann wird die Bildhöhe auf die neue Breite/bv eingestellt. Wenn die Bedingungen zum Verkleinern nicht erfüllt sind wird a=1. Die Verkleinerung ist dann abgeschlossen. Wenn a=0 wird init() erneut aufgerufen. Das ganze läuft dann so lange, bis die Verkleinerungsbedingung nicht mehr erfüllt ist.Es kann sein, dass das Bild jetzt (fast) so hoch wie das Fenster, aber ziemlich schmal ist. Wenn rechts daneben nicht viel Text steht, ist der Text jetzt zu einer schmalen Spalte zusammen gedrückt und rechts daneben ist das Fenster leer. Das sieht nicht gut aus. Deshalb wird jetzt geprüft ob die Tabelle mehr als 100 Pixel schmaler als das Fenster ist. Wenn das der fall ist wird die Tabelle auf annähernd Fensterbreite verbreitert.
Um einen Link zu setzen, der direkt auf diese Seite führt,
verwende folgende Url: