DIVs (Fehler im IE, Bildschirmauflösung + Popups)

Status
Nicht offen für weitere Antworten.

traumgaertner

Grünschnabel
Nach Lösungen für folgende (wohl eher kleinere) Probleme habe ich schon in diveren Foren etc gesucht, leider ohne sinnvolles Ergebnis. Nun läuft mir langsam die Zeit davon - ich hoffe also mir kann jemand helfen, bevor ich mit dem Kopf meine Tastatur bearbeite ;-)

Folgende Ausgangssituation:

Aktuell arbeite ich an einem Layout für ein MySpace Profil. Wer sich mit dieser (nutzlosen) Seite auskennt weiß dass sie nur HTML und CSS unterstützt (also leider kein Javascript, was meine Probleme grösstenteils gar keine sein liese). Da ich demnächst in Auftrag für eine Sängerin ein solches Profil erstellen soll bastel und teste ich derzeit an meinem eigenen herum, was mich vor folgende Aufgaben, und somit auch Probleme, stellt.

Das Layout soll
a) ein reines CSS-Layout werden das ausschließlich mit <divs> auskommen muss.
b) alle gängigen MySpace Selectoren überlagern (basierend auf einem Layer mit Hintergrundbild)
c) "dynamisch" sein und so sehr es geht den Eindruck einer Website vermitteln
d) in allen Browsern und Bildschirmauflösungen fix sein.

Da MySpace in seiner Programmierung ein absoluter Fall für sich ist möchte ich jetzt gar nicht auf die Technik dahinter eingehen...würde auch keine Rolle spielen, denn Punkt (b) ist keine Schwierigkeit. Zur Erklärung aber (wer sich nicht damit auskennt): MySpace-Profile sind quasi "statisch" - Inhalte über interne Links anzeigen, wie bei einer Website ist nicht möglich, man muss sich also auf eine einzige Seite beschränken.

Um die Inhalte dennoch dynisch zu halten habe ich auf CSS-Popups zurück gegriffen (im klassischen Sinne eine simple "hover" Funktion) die bei Mauskontakt mit einem Link in einem fest definierten Layer (<div>) den entsprechenden Inhalt anzeigen soll.

Einen Auszug dieser Codes poste ich mal kurz mit:
__________________________________________________________________________
.menueRight, a.menueRight:hover {display:block; background-color:white; opacity:0.5; filter:alpha (opacity=50); position:absolute; left:720px; width:170px; height:20px; z-index:3; font-family:arial narrow; font-color:black; font-weight:normal; font-size:12px; text-decoration:none;}

.thatsme {top:325px;}
.thatsme:hover span {top:-250px;}

a.menueRight span {display:none;}

a.menueRight:hover span {display: block;position: absolute;left: -190px;width: 310px;
height: 190px;z-index: 7;font-size: 12px;font-family:arial narrow;text-decoration:none;
font-color:black;}

<a href="#" class="menueRight thatsme">--->that..s me</div><span>What the popup will say here</span></a>
__________________________________________________________________________
Im Grunde funktioniert alles prächtig, FF und Opera machen weder in der Darstellung noch in der Programmierung Schwierigkeiten. Einzig natürlich (wie sollte es auch anders sein) der IE. Ärgerlich daran ist, dass der IE (ausnahmsweise, aber in diesem Fall nicht sonderlich verwunderlich) zwar tatsächlich alle Angaben zu den Positionen richtig interpretiert, die Funktion <hover> aber natürlich nicht erkennt (was zur Folge hat dass auch kein "popup" mit dem Inhalt angezeigt wird.

Lange Rede, kurzer Sinn:
Gibt es eine allgemein gültige Funktion im CSS die das <hover> Element ersetzt und trotzdem in allen gängigen Browsern erkannt wird?

Ich muss dazu sagen dass ich kein Coder bin sondern Layouter, und dementsprechend mich erst in CSS einarbeiten muss. Dennoch peile ich nicht warum der IE nicht mitspielt, denn sämtliche anderen Pseudoklassen (inklusive :hover in diversen anderen Selektoren der Seite) werden immerhin auch erkannt (nur eben dieser eine nicht).
Sprich: der entsprechende Link verändert bei Mauskontakt, wie gewollt, auch im IE Hintergrundfarbe etc. Warum also nicht auch hier?

Für jeden Lösungsansatz bin ich dankbar.

Desweiteren ergab sich noch das Problem der Darstellung auf anderen Bildschirmauflösungen, was vermutlich durch die Verwendung des Wertes "px" zustande kommen dürfte. Die Seite soll aber auf allen Auflösungen gleich dargestellt werden. Auf welchen Wert ratet Ihr mir dass ich da zurück greifen sollte, damit das funktioniert? Mir wurden "pt" und "em" empfohlen (?), da diese eben fix sind, und sich nicht nach den Pixeln richten, stosse hierbei aber mit meinem Intellekt/Wissen gegen Mauern (zumal ich noch völlig auf HTML eingeschossen bin - böhmische Dörfer also). In welcher Relevanz verhalten sich pt und em denn zu px!? Also - 12px in der Schriftgrösse wären wie viel pt oder em!?

Sorry für den langen Threat, aber mein Latein ist wirklich am Ende, und ich komme so langsam in Zugzwang.

Vielen Dank schon einmal für eventuelle Lösungsvorschläge.

MfG

Traumgaertner

[EDIT]
Wahrscheinliche Fehlerquelle im IE:
Der anzuzeigende Text liegt im <span>...der IE interpretiert den :hover aber offensichtlich nur im Bereich von Links (also <a>)...Lösungsvorschläge!?

Gibt es im CSS evtl. eine ähnliche Funktion wie die get.element by ID im javascript? Dann würde ich die Texte durch JPEG´s austauschen. Danke.
[EDIT ENDE]
 
Zuletzt bearbeitet:
Hi,
traumgaertner hat gesagt.:
Wahrscheinliche Fehlerquelle im IE:
Der anzuzeigende Text liegt im <span>...der IE interpretiert den :hover aber offensichtlich nur im Bereich von Links (also <a>)...Lösungsvorschläge!?
im Prinzip hast du mit dem eingebundenem span-Element, das das Popup repräsentiert, alles richtig gemacht, denn der IE kann mit diesen "CSS-Popups" auch wunderbar umgehen, nur stellt er scheinbar die Arbeit ein, wenn die Links mit dem Opacity-Filter formatiert werden.

Einfach mal filter:alpha(opacity=50) auskommentieren und noch folgende Regel im Stylesheet aufnehmen, damit das Popup grundsätzlich im IE angezeigt wird:

Code:
a.menueRight:hover { border:none; }

Mir ist jetzt nur noch nicht ganz klar, woher eigentlich das </div>-Tag im Link stammt?
 
Ui - supi - vielen Dank für die rasche Antwort.

Ich werde den Filter generell erst einmal rauslöschen um das auszuprobieren, Du hast mich damit nämlich auf ein weiteres Problem gestossen: Der Filter im hover (der sich auf den Link selbst bezieht) wendet sich nämlich ungewollt auch auf den Inhalt des Popups an. Was nicht sonderlich praktisch ist wenn der Filter zu hoch eingestellt wird ^^

Allerdings gebe ich zu...woher der </div> im Link kommt weiß ich selbst nicht wirklich *stutz*. Vermutlich habe ich im allerersten Link den Code aus Versehen falsch geschrieben, und dadurch dass ich die Links, um nicht alles neu zu schreiben, nur kopiert und die entstprechenden Elemente verändert habe, habe ich jetzt diesen überflüssigen Tag überall -.-

Da aber dennoch die gesamte Seite problemlos auf FF und Opera läuft scheint das keine weiteren Auswirkungen zu haben. Zu Vermuten wäre allerdings (da irgendwo im Code ja auch ein <div> für die Position des Popups festgelegt ist, dass der :hover sich aus gerade diesem überflüssigen Tag auch auf den damit verbundenen div anwendet. Oder?

Nur verstehe ich nicht warum der Filter die Funktion im IE bremst, denn der Filter funktioniert ja. Notfalls mit einem transparenten Gif statt Filter arbeiten? *seufz*
 
Du hast mich damit nämlich auf ein weiteres Problem gestossen: Der Filter im hover (der sich auf den Link selbst bezieht) wendet sich nämlich ungewollt auch auf den Inhalt des Popups an. Was nicht sonderlich praktisch ist wenn der Filter zu hoch eingestellt wird ^^
Das liegt daran, dass der Filter an das span-Element vererbt wird, was mit einem transparenten Hintergrundbild ebenfalls so auftreten wird ;)
 
Verstehe :)

Gibt es eine Möglichkeit das so umzucoden dass der Filter wirklich nur auf den Link und seine Box angewendet wird, ohne das Popup mit einzubeziehen?

Ich habe den von Dir genannten Code mit eingefügt, und siehe da:
Jetzt spielt der IE mit :) Vielen Dank - irgendwie war mir fast klar dass es eine Kleinigkeit sein würde. Aber dass sie so simpel ist hätte ich dennoch nicht gedacht. Allerdings hattest Du recht was die Filter angeht. Ohne funktioniert es, mit Filter hingegen arbeitet der IE nicht mit. Sehr schade, da der transparente Effekt wichtig gewesen wäre für das Layout. Aber man kann wohl nicht alles haben.

Jetzt stellt sich mir noch eine ganz andere Frage:
Die Links, auf die ich das Popup gelegt habe, sind ja sinngemäss tot (sie sollen ja keinen Verweis darstellen sondern lediglich das Popup generieren). Kann ich den :hover samt Popup nicht, statt auf einen Link, auch einfach auf einen Text legen? Denn MySpace wandelt den toten Link automatisch auf myspace.com um, was für Besucher die nicht wissen dass es kein Link sein soll natürlich verwirrend ist, ganz zu schweigen von der Zweckmässigkeit.

Desweiteren bleibt immernoch das Problem der Grössenangaben, die bei anderer Bildschirmauflösung zu Fehlern in der Darstellung führen.

Auch hierfür schon einmal danke - Du bist heute offiziell Held des Tages ;)

[EDIT]
Ich habe jetzt erst einmal den Mittelweg (opacity:0.5) gewählt, ohne Filterangabe, sodass der Effekt in den meisten Browsern erkannt wird. IE Nutzer mussen dann eben auf den Filter verzichten. Aber wenigstens funktioniert das Popup jetzt in allen Browsern reibungslos, und der Effekt bleibt mir grösstenteils erhalten :)
[EDIT ENDE]
 
Zuletzt bearbeitet:
Hi,
Jetzt stellt sich mir noch eine ganz andere Frage:
Die Links, auf die ich das Popup gelegt habe, sind ja sinngemäss tot (sie sollen ja keinen Verweis darstellen sondern lediglich das Popup generieren). Kann ich den :hover samt Popup nicht, statt auf einen Link, auch einfach auf einen Text legen? Denn MySpace wandelt den toten Link automatisch auf myspace.com um, was für Besucher die nicht wissen dass es kein Link sein soll natürlich verwirrend ist, ganz zu schweigen von der Zweckmässigkeit.
die modernen Browser incl. IE7 unterstützen die allgemeine Pseudoklasse :hover für die übrigen HTML-Elemente, also z.B. auch für einen Textabsatz:

Code:
p.infobox span {
  visibility:hidden;
}
p.infobox:hover span {
  visibility:visible;
}
Code:
<p class="infobox">Text<span>weitere Infos zum Text</span></p>

Lediglich die Vorgängerversionen des IE7 spielen da bekanntermaßen nicht mit.
 
Stimmt, danke. Ist halt nur leider erst ab IE7 unterstützt, werde also wohl noch ein "if" einbauen müssen wo ältere Browser das dann eben doch als Link interpretieren. Wer denkt sich so einen Schrott überhaupt aus? Kein Mensch braucht IE ^^

Mit der Angabe von "pt" statt Pixeln konnte ich jetzt sogar das Darstellungsproblem in anderen Auflösungen beheben...so langsam wird´s...nicht zuletzt dank Dir :)
 
Hm. Also mit dem Layout hat jetzt alles funktioniert und ich bin begeistert :)

Nun habe ich versucht das alles auf ein anderes Layout anzuwenden, und es gestaltet sich, trotz ähnlicher Programmierung, ein seltsames Problem im IE. Den Popup/Span habe ich per hover jetzt auf ein Image gelegt. Exakt daneben liegt ein zweites Image. In Opera/FF klappt alles, aber der IE nimmt wechselt den Span nur ein einziges Mal. Also vom Wechsel image 1 zu image 2 wechselt das Popup, bleibt dann aber sichtbar, und nix geht mehr. Diesmal verzichtete ich allerdings auf filter im Link. Ich habe mal über einen Code gelesen der dazu führt dass das Popup wieder verschwindet, kann ihn aber nicht mehr finden. Sorry - aber dieser IE reizt mich langsam ^^
 
Klar, kein Thema.

---{CSS}---

.topsix {text-align:center;align:center; background-color:none;position:absolute;top:25pt;height:230pt;width:109pt;
z-index:3;margin-left:165pt;left:50%;padding:1pt;}

img {border:none;}

a.img, a.img:active, a.img:visited {border:none;opacity:0.9; filter:alpha (opacity=90); text-decoration:none;}

a.img:hover {border:none; filter:alpha (opacity=10);}

a.img:hover span {display:block; visibility:visible; position:absolute; text-decoration:none;}

a.img span {display:none;}

span.freunde {position:absolute;top:0pt;left:50%;margin-left:-300pt;background-color:white; border: 2pt outset gray; height:100pt;width:100pt;z-index:4, text-decoration:none; font-family:arial narrow 12px; color:black;}

---{HTML}---

<div class="topsix">
<a href="http://www.msplinks.com/MDFodHRwOi8vcHJvZmlsZS5teXNwYWNlLmNvbS9pbmRle
C5jZm0/ZnVzZWFjdGlvbj11c2VyLnZpZXdwcm9maWxlJmZyaWVuZGlkPTEzMzk1NjMyNCZNe
VRva2VuPWUzMmE1YTA2LTYxNzEtNDAzZC04YmFhLWY0NGJkMDljZmQxOQ==" class="img"><span class="freunde">Dark Diva<br></span><img width="60pt" src="http://a56.ac-images.myspacecdn.com/images01/26/s_56e043055d12180c17a719cb219
2544f.jpg"></a> <a href="http://www.msplinks.com/MDFodHRwOi8vcHJvZmlsZS5teXNwYWNlLmNvbS9pbmRleC5j
Zm0/ZnVzZWFjdGlvbj11c2VyLnZpZXdwcm9maWxlJmZyaWVuZGlkPTEzMzk1NjMyNCZNeVRva
2VuPWUzMmE1YTA2LTYxNzEtNDAzZC04YmFhLWY0NGJkMDljZmQxOQ==" class="img"><span class="freunde">Dark Diva Design<br></span><img width="60pt" src="http://a56.ac-images.myspacecdn.com/images01/26/s_56e043055d12180c17a719cb2192
544f.jpg"></a></div>

---

Die Links werden übrigens von MySpace automatisch so generiert, also nicht irritieren lassen ^^

Edit:
Ups - sorry - hab der Übersicht halber die Linkadressen mal auseinander geschnibbelt.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Zurück