Greybox anpassen
Verfasst von Torsten am 15. August 2008
Ich hatte schon mal über die wunderbare Lightbox-Variante Greybox berichtet. Nun habe ich für eine Kundin Greybox extrem anpassen müssen und dabei fasziniert festgestellt, dass sich Greybox sehr einfach anpassen lässt. In diesem Artikel möchte ich zeigen, wie ich dass gemacht habe.
Die Anpassungen betreffen vor allen die CSS-Datei „gb_styles.css“, eine Änderung musste ich an der JavaScript-Datei „gb_scripts.js“ vornehmen.
Aber der Reihe nach. Die erste Aufgabe war das Anpassen der Hintergrundfarben. Der Navigationsstreifen, der im Original vorhanden ist, sollte nicht mehr vorhanden sein. Dazu stellen wir einfach die Hintergrundfarbe der Navigation auf die gleiche Hintergrundfarbe wie den Overlay. Die neue Overlay-Farbe ist ein Grauton: #CFD0D2. Die Default-Werte habe ich als Kommentar hinter die geänderte Zeile geschrieben. Da die Bilder einen eigenen Schatten hatten, wurde auch der 3-Pixel-Border beim Bild aus dem Originalskript ausgeschaltet. Auch der Caption-Text sollte nicht dargestellt werden.
#GB_overlay {
background-color: #cfd0d2; /* cfd0d2=graue Hintergrund-Farbe / #000 */
position: absolute;
margin: auto;
top: 0;
left: 0;
z-index: 100; }
.GB_Gallery .content {
background-color: #cfd0d2; /* #fff; */
border: 3px solid #cfd0d2; /* #ddd; */ }
.GB_header {
top: 10px;
left: 0;
margin: 0;
z-index: 500;
position: absolute;
border-bottom: 2px solid #cfd0d2; /* #555; */
border-top: 2px solid #cfd0d2; /* #555; */ }
.GB_header .inner {
background-color: #cfd0d2; /* #333; */
font-family: Verdana,Arial,sans-serif; /* Reihenfolge: Verdana nach vorne! */
padding: 2px 20px 2px 20px; }
.GB_header .caption { visibility:hidden; }
Ein vertikal zentriertes Bild wirkt in meinem Augen immer so, als ob es zu weit unten wäre, daher stelle ich das Bild 20 Pixel weiter oben dar:
.GB_Gallery {
margin: -20px 22px 0 22px; } /* 1. Wert: 0px */
Die Textfarbe des Bildzählers wurde auf die passende dunkelgraue Textfarbe gesetzt:
#GB_middle {
color: #646466; /* Textfarbe: dunkelgrau / #eee; */ }
Beim ersten und letzten Bild sind die Pfeile nach links bzw. nach rechts nicht mehr aktiv, aber im Stylesheet wird nur der Cursor angepasst (habe ich mal stehen lassen). Aus diesem Grund existiert aber die notwendige CSS-Klasse bereits, so dass ich den Pfeil sehr einfach komplett verstecken konnte:
#GB_middle .disabled {
cursor: default;
visibility:hidden; }
Der vorletzte Eingriff betrifft nun die JavaScript-Datei („gb_scripts.js“). Hier ändern wir den Wert der Opazität von 0,7 auf 1, so dass die Webseite nicht halbtransparent im Hintergrund zu sehen ist, sondern komplett ausgeblendet wird:
AJS.fx.fadeIn(this.overlay,{duration:300,to:1,onComplete:function(){ /* vorher 0.7 */
AJS.setOpacity(this.overlay,1); /* vorher 0.7 */
Der letzte Punkt und das i-Tüpfelchen ist dann die Ladegrafik. Die ist noch nicht angepasst an die graue Hintergrundfarbe. Aber die Seite http://www.ajaxload.info/ hilft uns und wir erstellen die Wunschgrafik in der passenden Farbe.
[Nachtrag: Eine weitere Seite für Ladegrafiken ist preloaders.net. Via Dr. Web]
Die Grafiken für Next und Previous, sowie Close wurden gegen eigene Kreationen ausgetauscht und so haben wir eine wunderbar angepasste Greybox-Variation, die alle Vorteile von Greybox hat und perfekt in die Webseite integriert ist.
Sobald die Webseite online, werde ich hier das Ergebnis verlinken.
Update: http://katjaembacher.de/
Bei Fragen, Hinweisen oder Kritik hinterlasst gerne einen Kommentar!
Nachtrag: Ich habe die Portfolio-Seite nach Kundenwunsch auch mit einem Tooltip ergänzt. Für Greybox eignet sich qTip ganz hervorragend. Kleiner Hinweis: Im Quelltext muss qTip als erstes verlinkt sein, sonst funktioniert es nicht. Der große Vorteil von qTip ist, dass er das sowieso vorhandene title-Attribut benutzt und mittels der CSS-Datei wunderbar angepasst werden kann.
Nachtrag 2: Der Internet Explorer 6 (IE 5 und kleiner vernachlässige ich mal …) stellt merkwürdigerweise den Hintergrund nicht, wie gewünscht, grau dar. Mit der Webdeveloper-Toolbar bin ich darauf gekommen, dass dieser Bereich im CSS als html > body definiert ist. Das war komisch, weil ich dort ja die Hintergrundfarbe korrekt angegeben habe. Dann bin ich darauf gekommen. In der Datei „loader_frame.html“ gibt es auch einen Style-Bereich. Hier muss die Hintergrundfarbe im Body ebenfalls definiert werden, dann wird auch im IE 6 alles korrekt dargestellt!
<style>
body {
background-color: #cfd0d2; /* ergänzt! */
padding: 0;
margin: 0;
overflow: hidden;
}
#GB_frame {
visibility: hidden;
width: 100%;
height: 100%;
}
#loading {
padding-top: 50px;
position: absolute;
width: 100%;
top: 0;
text-align: center;
vertical-align: middle;
}
</style>
Noch mehr Greybox-Artikel:
Greybox und ein paar Probleme
Greybox anpassen Teil 2




Greybox anpassen - Teil 2 « Netztaucher sagte
[...] Greybox anpassen [...]
Greybox und ein paar Probleme … « Netztaucher sagte
[...] Greybox anpassen [...]
Mark sagte
Wie bei Dr. Web angemerkt: Dem Preloaders-Link fehlt das „www.“.
Torsten sagte
Der Link funktioniert doch trotzdem. :-) Es gibt bereits eine ganze Bewegung, die sogar das „www“ komplett abschaffen möchte:
http://sw-guide.de/2006-03/www-subdomain-bei-webadressen/
Gruß, Torsten
Mark sagte
Von mir aus kann man das „www.“ gerne abschaffen. Mir ging es aber darum, dass die Adresse ohne „www.“ die ganze Nacht über (und auch noch während der Abgabe meines Kommentars) eine CPanel-Standardseite anzeigte. Inzwischen scheint das jemand repariert zu haben.
Nikki sagte
hey torsten, hab bei mir das Problem, dass die Navi-buttons der Greybox mit formschönen grauen Rahmen angezeigt werden (siehe Homepage). Hab mich schon durch die komplette css gewühlt aber finde keine Lösung, hast du vielleicht eine Idee? (Problem gab es schon direkt nach Download und vor Abänderung der Farben)
Gruß, Nikki
Torsten sagte
Das liegt an deiner eigenen CSS-Datei: http://jeuxdecouleurs.je.ohost.de/homepage/css/screen.css
Das steht alle Bilder sollen einen grauen Rand bekommen:
img { border: solid 1px #aaa;
padding: 1px;
max-width: 95%; }
Als schnelle Lösung könntest:
#GB_middle img { cursor: pointer;
vertical-align: middle; }
und
.GB_header .close img { z-index: 500;
cursor: pointer; }
ergänzen um die Zeile:
border: none;
Gruß, Torsten
Nikki sagte
Vielen dank! auf die screen.css wär ich im leben nicht gekommen (newbie) funktioniert bestens!
gruß zurück
Cherry sagte
Danke für die tolle Anleitung.
Es scheint so zu sein, daß das Python Skript nur mit Python 2.4 läuft ( so wie im Skript auch angegeben). Mit der aktuellen Python 3.1 gibt es eine Fehlermeldung:
File „combiner.py“, line 22
„“"
^
SyntaxError: invalid syntax
Torsten sagte
Das Python-Skript ist ja nur zum Komprimieren des Skriptes gedacht. Hast Du da auch das Skript aktualisiert, wie hier beschrieben:
http://netztaucher.wordpress.com/2009/02/21/greybox-selbst-komprimieren/
Unter meinem Mac (10.5.x) läuft Python 2.5.1, da funktioniert es ohne Probleme.
Gruß, Torsten
Cherry sagte
Ja die Änderungen sind drin. Und mit Python 2.4 geht’s ja auch (vieleicht auch mit ner höheren, nur meine ganz aktuelle 3.1 will das nicht). OS= Win XP.
War eigentlich als Hinweis für andere gedacht, die evtl. an derselben Stelle scheitern.
Irgendwie bekomme ich nur die neuen Funktionen wohl nicht korrekt untergebracht. Nach dem Komprimieren geht dann die greybox leider nicht mehr, sondern es öffnet sich ein neues Fenster.
Sehe übrigens gearde, daß ich mit dem Kommentar wohl in der falschen Folge des Tuts gelandet bin. Sorry dafür… sollte bei Teil 2 kommen.
Cherry sagte
nu aber …..
Es läuft *juhu*
nochmal ich ….das möchte ich hier noch hinzufügen…. der Vollständigkeit halber.
Woran es hing? An einem simplen Komma. Eigentlich logisch, aber als nicht-Javascriptler sieht man nicht alles sofort.
Also: wenn man die Funktion ‘Taste’ einbaut, muß man vorher an die Funktion’switchNext’ ein Komma anhängen. Vielleicht ein Dummy-Hinweis, aber mir hätte das geholfen…
Nochmal ganz herzlichen Dank Torsten, daß Du deine Arbeit mit anderen teilst.
PS.: gibt es auch eine Tastatursteuerung, die im IE/ WIN funktioniert?
Torsten sagte
Ah, danke! Das Komma habe ich vergessen zu erwähnen. Werde den Text mal ergänzen!
Leider funktioniert die Tastatursteuerung (noch) nicht im IE. Wenn ich dafür eine Lösung habe, poste ich noch mal oder ergänze den Artikel.
Torsten sagte
Lösung gefunden!
Jetzt funktioniert die Tastatursteuerung auch im Internet Explorer.
Habe den Artikel entsprechend ergänzt.
Cherry sagte
Super!
Dankeschön dafür.
Torsten sagte
Kein Problem! Danke für den Hinweis.
Greybox selbst komprimieren « Netztaucher sagte
[...] Leser Cherry hat mich darauf hingewiesen, dass es beim Komprimieren wohl ein Problem mit der aktuellen Python-Version 3.1 gibt. Unter 2.x [...]
Mirko sagte
Ich nutze die Greybox um zB GB einträge zumachen das heißt wenn der Nutzer auf senden geht soll die Greybox geschlossen werden und die Seite im Hintergrund aktualliesiert bzw wenn er oben rehts auf das X geht soll er die darunterliegende Seite reloaden.
Wie kann man das den einstellen?
Torsten sagte
Um die Greybox zu schließen kannst du folgendes benutzen:
http://orangoo.com/labs/GreyBox/FAQ/#q3
Für alles weitere kann ich ohne nähere Informationen nicht viel sagen. Es sollte aber alles per Javascript zu lösen sein.
Sascha sagte
in der datei gb_scripts.js der funktion GB_hide ein location.reload(); hinzufügen.
also so:
GB_hide=function(cb){
GB_CURRENT.hide(cb);
location.reload();
};
um die GB zeitgesteuert zu schliessen, script mit folgendem inhalt aufrufen:
closetime = 2;
window.setTimeout("parent.parent.GB_hide()", closetime*1000);
Wilhelm sagte
Hallo!
Ich hätte auch eine Frage:
Wenn man die „Blätter-Funktion“ in Form von z.B. GB_showImageSet verwendet, gibt es da eine Möglichkeit am Anfang bzw. am Ende der Fotogallerie die „Zurück“ bzw. „Weiter“ Button auszugrauen oder auszublenden?
(Ich hoffe, das ihr versteht was ich meine.. *g*)
Danke schonmal für kommende Tipps! :-)
Torsten sagte
Die Lösung steht im Artikel, schau mal nach „#GB_middle .disabled“.