Autor: Ich www.friedels-home.de | IE 5 | IE 6 | NN 4 | NN 6 | NN 7 | Moz 1 | OP 6 | OP 7 |
Ein Bild kann man recht einfach an die Fensterbreite anpassen. Wenn man <img
src="bild.gif" border="0" width="100%"> in
seinen Quellcode schreibt, wird das Bild "bild.gif" ohne Rahmen so in
die Seite eingepasst, dass es die gesamte Breite einnimmt. Wenn das Bild in einem
anderen Element, z.B. einer Tabellenzelle ist, nimmt es die gesamte Breite
dieser Zelle ein. Wenn man <img src="bild.gif"
border="0" height="100%"> in seinen
Quellcode schreibt, wird das Bild so in die Seite eingepasst, dass es die
gesamte Höhe einnimmt. Wenn man <img src="bild.gif"
border="0" width="100%" height="100%"> in
seinen Quellcode schreibt, werden die Breite und die Höhe des Bildes angepasst.
Natürlich wird das Bild in seiner Form dann an das Fenster angepasst, was meist
unerwünscht ist. Um das Bild nicht zu verzerren darf man also immer nur entweder die
Breite oder die Höhe festlegen. Da du nicht weißt, ob die maximale Größe des Bildes durch
die Breite oder durch die Höhe begrenzt wird, ist das Bild möglicherweise nicht vollständig
sichtbar.
Meine Lösung: (die Teile, die von dir angepasst werden müssen wenn du das Script nachbauen willst, sind farbig dargestellt)
Um ein solches Script zu realisieren muss man zuerst die innere Breite und die innere Höhe des Fensters feststellen. Da es keine
einfache Methode dafür gibt, die in allen Browser funktioniert, muss man zu einem Trick greifen. Ich verwende dazu ein blind.gif. Das ist
ein Bild, das nur 1 Pixel hat. Dieses Pixel ist transparent. Das Bild ist also unsichtbar. Es werden zunächst, wie immer, die benötigten
Variablen deklariert. "x" und "y" sind die Breite und Höhe, die maximal für das Hauptbild zur Verfügung stehen.
"b" und "h" sind die Breite und Höhe des unskalierten Hauptbildes. "bild" ist
die URL des Hauptbildes. Ein blind.gif wird ganz oben in der Seite mit 100% Breite und 1 Pixel Höhe eingefügt und erhält den
Namen "aaa" damit es als Objekt angesprochen werden kann. In der nächsten Zeile wird die Breite (in Pixel) dieses Bildes
in der Variablen "x" gespeichert. Danach kommt ein blind.gif, das 1 Pixel Breite und 100% Höhe hat. Es bekommt den Namen
"bbb". Dieses Bild ist links ausgerichtet damit das eigentliche, sichtbare Bild rechts daneben Platz findet. Die Breite von
"bbb" wird in der Variablen "y" gespeichert. Durch diese beiden blind.gifs stehen dem eigentlichen Bild in Breite
und Höhe je ein Pixel weniger Platz zur Verfügung. Deshalb wird von "x" und "y" jeweils 1 abgezogen. Damit ist
"x" also die Breite die für das Hauptbild zur Verfügung steht, und "y" ist die Höhe, die zur Verfügung steht. Jetzt muss
festgestellt werden, ob sich das Bild über die ganze Fensterbreite oder über die ganze Fensterhöhe erstrecken soll. Wenn die
Bedingung x/y>b/h erfüllt ist, wird das Bild so hoch dargestellt, wie das Fenster ist. Wenn die Bedingung nicht erfüllt ist, wird das
Bild so breit dargestellt, wie das Fenster ist. Leider hält sich den NN in Version 4.x mal wieder nicht an die
Normen und lässt zwischen den Bildern Abstände frei. Um zu verhindern dass in diesem Browser der untere oder rechte Rand des
Bildes abgeschnitten wird, kann man "y" und "x" verringern. Damit nach einer eventuellen Größenänderung
des Fensters das Bild automatisch angepasst wird, habe ich ins Bodytag den den Eventhandler
onResize="javascript:location.reload()" eingefügt, der nach eine Größenänderung die Seite neu lädt. Unter
Opera 5 und 6 funktioniert dieser Eventhandler nicht. Nach eine Änderung der Fenstergröße wird das Bild nicht automatisch angepasst.
Um einen Link zu setzen, der direkt auf diese Seite führt,
verwende folgende Url: