Hallo Leute !
@Ruffnex, Dein Einwand, man könnte mit CSS einiges an Code sparen, hat mich nicht mehr losgelassen. Früher hatte ich in DHTML programmiert, und in Javascript auch animiert. Die Unterschiede der Browser und die mangelnde Kompatiblität der Browser untereinander haben mich damals wieder abgebracht.
Jetzt, mit CSS2 ein ausgereifter Standard, habe ich mir mal die Seite css4you.de zu Gemüte geführt. Sie ist teilweise anschaulicher und übersichtlicher als das SelfHTML, was ich bisher verwendete. Mit neuem Eifer versuchte ich ein Rollover-Effekt, wie ich ihn in der Homepage (www.svenspages.de) bereits mit Javascript realisiert habe, mit CSS-Mitteln zu machen; also ein statisches Bild, was beim Drüberfahren zu einem animierten Bild wechselt. Herausgekommen ist folgender Test:
http://www.svenspages.de/test/css-knopf-test.php
wieder einmal bin ich damit zwischen die Browser-Fronten geraten. Also im Grunde sind es 2 Links mit jeweils unterschiedlichen 2 Bildern. Wenn man mit der Maus drüberfährt, soll das jeweils animierte 2. Bild eingeblendet werden.
Um die Performance zu testen, habe ich die zwei Links mehrfach über Tabellen als Schachbrettmuster angeordnet. die DIV-Tags enthalten die A-tags (links). die A-tags sind leer, erhalten aber über CSS eine Breite und eine Höhe. den DIVS werden die IDs zugewiesen. Die ID legt das Aussehen fest.
Unter Opera gehts. Alle Links werden mit dem nicht animierten Bild geladen und das animierte Rollover-Bild wird korrekt angezeigt und animiert.
Unter Firefox zeigt er die Bilder auch. Nur das animieren der Rollover funktioniert nur einmal. Beim nächsten drüberfahren wird nur das letzte Frame der animierten GIF angezeigt (in der GIF ist eingestellt, dass sie beim letzten Frame anhält). Opera startet die GIF jedesmal neu wenn sie angezeigt wird. Stört aber nicht weiter.
Bei Internet Explorer der macht nun was ganz anderes. Die Links werden nicht angezeigt, wohl weil sie physisch keinen Inhalt aufweisen. Selbst mit einem Leerzeichen dazwischen wird der Link nicht angezeigt. Das Bild erscheint nur da wo der Text ist. Bei dem obersten linken Kästchen habe ich eine Platzhalter-GIF eingebaut. Die Grafik ist transparent und 90x90 gross.
Gibt es eine nicht zu unübersichtliche Möglichkeit, dass ein Rollover zumindest bei allen drei Browsern korrekt angezeigt wird ? Dabei ist mir in erster Linie nicht wichtig, ob die Animation auch jedesmal neu gestartet wird - wäre aber schön.
CU Elvereth
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
ahhhhhhh tabellen .. ggg
Nein also nach einer halben Stunde habe ich nun deinen Taxt gelesen und mal über deinen Quelltext geschaut.
Schreibe bitte nicht
font-family:"arial","verdana",sans serif; ... da dürfen keine "" hin
setze auch ein Universal Attribut *{margin:0; padding:0;}
bedenke! bei einem css layout sollten keine style angaben in deiner index stehen (width, heigt, border) dafür ist die css da. Die würde ich aber auch auslagern
das img beim td brauchste net
Nimm bei den td die angabe "width" weg. ... Fix das erstmal und dann schauen wir weiter ok?
P.S.: Nicht Valide
EDIT: Der IE stellt sich oft bei den kleinsten CSS Fehler zickig an.
Bin auch über ICQ zu erreichen # 150 197 983
[Diese Nachricht wurde nachträglich bearbeitet.]
ich bin nicht mehr über ICQ zu erreichen. Hab da zu viele Viren reingekriegt (nutzte trillian).
Dass ich CSSse auslagern kann, weiss ich. Hab ich in der HP schon gemacht. Ich wollte die Test-PHP übersichtlich halten, damit die Leute mir helfen und schneller drüberguggen können (nur eine Quelldatei kann man besser durchscrollen).
das .dummy {} hatte ich früher immer reingemacht weil der Netscape die CSS Blöcke nicht erkannt hat. War das Resultat von 3 Stunden Fehlersuche. CSS drin -> wurde erst mit dieser .dummy {} geladen. Vielleicht isses ja mittlerweile gefixt. in der css4you.de steht dass fonts mit " mit ' und ohne Zeichen angegeben werden können. Mir persönlich gefallen einfache ' auch besser. ;-)
das mit den Tabellen... find ich übersichtlicher als jetzt mit ner Schleife und 'n haufn "absolute gepositionierte" DIVs mit "top" und "left" auszugeben. In PHP kein Problem, im Quelltext ganz schön viel Zeux.
so jetzt gugge nochmal...
CU Elvereth
[Diese Nachricht wurde nachträglich bearbeitet.]
Moin Elvereth,
bevor du irgendjemandem etwas zum Testen oder Begucken gibt und bevor du nach irgendeinem Fehler suchst, überprüfe deinen Code auf formale Fehler (Validierung).
Für HTML/XHMTL: http://validator.w3.org
Für CSS: http://http://jigsaw.w3.org/css-validator
Claus
Hallo ClausG,
jetzt isses zwar W3C-Konform, aber läuft immernoch nicht zufriedenstellend:
IE - zeigt die Links garnicht
Opera 7 - zeigt keine JPG-Hintergründe, die über url() angegeben wurden
Opera 8 - da läufts
Firefox 1.0 - Animatione werden nur 1x gezeigt
CU Elvereth
Mache grade eine Lösung über CSS .. imm läuft es überall außer im IE .. bin an ner Lösung dran.
Ist das so wie du meintest ?
www.pixeldesign-online.de/test/
www.pixeldesign-online.de/test/layout.css
[Diese Nachricht wurde nachträglich bearbeitet.]
Ja genauso siehts bei mir auch aus. IE will keine Links zeigen. Blöder IE...
im Firefox gehts wahrscheinlich nicht anders. Ist eigentlich nicht schlimm, wenn die Annis nicht ein zweitesmal angezeigt werden.
Opera7 kann keine url(xxxxxxx.jpg)... ?!
Nagut. Bin mal gespannt was Du noch rauskriegst. Vielleicht gehts wirklich nicht ohne leere transparente platzhalter-GIFs im IE...
CU Elvereth
Nicht so ganz, da der Validator immer noch etwas zu quaken hat. Ergänze noch den verwendeten Zeichensatz, also zum Beispiel
<meta http-equiv="content-type}" content="text/html; charset=ISO-8859-1">
im Kopf. Lass das lang-Attribut weg, solange deine Seite nicht mehrsprachig ist.
Ich benutze den FF 1.5. Bei mir funktioniert es. Der Text wird jeweils einmal nach rechts unten geschoben und beim nächsten überfahren wieder, genau wie in Opera 8.5. Das ist beim IE6 übrigens genauso.
Nach dem Klicken auf einen der Einträge wird plötzlich nur noch ein gelblicher Hintergrund angezeigt. Klar! Du hast für .butt a kein Hintergrundbild angegeben. Nur für .butt a:link und .butt a:hover. Es gibt aber noch a:visited, a:active und a:focus. Definiere die jpg-Grafik in .butt a und dann nur für butt a:hover das gif. Dann sollte es funktionieren.
BTW: Warum benutzt du ein jpg, wo es ein gif doch auch tun würde?
Ansonsten sollte du mal SELFHTML durcharbeiten.
Claus
hab ne .htaccess Datei gemacht, wo nur drinsteht "AddDefaultCharset On" .
das hat ausgereicht, damit der zumindest den Zeichensatz findet und nicht auf utf-8 zurücksetzt. Naja zusätzlich kann es ja auch nicht schaden.
das mit den Links - stimmt daran könnte es wirklich liegen. Werd ich mal testen.
JPG verwendete ich aus versehen. Klar würde es eine gif auch tun. oder eine png. mir war es nicht so wichtig. mir ging es in erster Linie um die CSS Geschichte. die Bilder sind dann schnell geändert wenn der Rest läuft. Ich werde dann das fertige Script, wenns läuft, in der Homepage einsetzen. Da sinds alles Gifs.
--- edit:
Hey danke das funzt wunderbar jetzt. :-) also Länge, Breite, display:block und das Low-Image in .classname A {} definieren und das High-Image in .classname A:hover {} .
dann hat man ein Rollover, ws in IE, Opera 7, Opera 8 und Firefox (mit abstrichen) zufrieden funktioniert.
CU Elvereth
[Diese Nachricht wurde nachträglich bearbeitet.]
Jup genau ... so gehts ... mal schauen wie du mit dem Rest von CSS klarkommst
Halt uns auf dem Laufenden. Ich hätte es an deiner stelle ohne die ganzen divs gemacht, sondern mit einer Liste
Siehe mein BSP .. habe es nurnoch nicht gefixt
EDIT: Ändere deinen Doctype in XHTML dann dürfte es auch valide sein
[Diese Nachricht wurde nachträglich bearbeitet.]