XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   CSS (http://xhtmlforum.de/forumdisplay.php?f=73)
-   -   Konditionelle CSS für IE7 / < IE7 (http://xhtmlforum.de/showthread.php?t=45765)

sanpedro 07.05.2007 17:13

Konditionelle CSS für IE7 / < IE7
 
Bin ein bestehendes Script am anpassen und mir fehlt offen gestanden ein wenig die Erfahrung mit diesen konditionellen Scripts. Diese fragen die Version des IE ab und erlauben es, individuelle CSS für die Versionen zu übergeben.

Hier mein Script, das im Head des HTMs drin steht. Der Knackpunkt liegt in der drittletzten Zeile mit dem top: 20px

<!--[if lt IE 7]>
<style type="text/css" media="screen">
body {behavior: url(csshover.htc); font-size: 100%;}
#menu ul li a {height: 1%;}
}
</style>
<![endif]-->
<!--[if IE] < 7>
<style type="text/css" media="screen">
#menu ul li {float: left; width: 100%;}
#menu ul {width: 0px;}
#menu ul ul {top: 20px;}
</style>
<![endif]-->


Meine Problematik liegt hauptsächlich darin, dass ich einen Wert für den IE 7 übergebe und dieser erst mal gar nicht drauf reagiert. Stattdessen spricht der 6er darauf an, obwohl ich den Wert nur dem 7er übergebe. Wahrscheinlich ist das Script irgendwie falsch gewickelt. Mein angestrebtes Ziel kommt übrigens im FF bestens zur Geltung. Da funktioniert nämlich alles zum Besten…

Danke für jedwelchen Input.

Yrr 07.05.2007 17:28

Zitat:

Zitat von sanpedro (Beitrag 332367)
<!--[if IE] < 7>

Uups, Du meinst wohl eigentlich <!--[if IE 7] >

sanpedro 07.05.2007 17:34

Ahm, ehm…

Ich benötige eigentlich eine Bedingung, die mir

1. den IE 7 anspricht –> <!--[if lt IE 7]>

2. alle vorherigen Versionen anspricht. Meine Bedingung –> IE kleiner als 7 –> <!--[if IE] < 7>

Macht das Sinn? Schreibt man das so?

heiko_rs 07.05.2007 17:36

Um meinen Quelltext so frei wie möglich von IE-Hacks zu halten, weise ich per <!--[if IE]> allen IEs eine einzige CSS-Datei zu und arbeite innerhalb dieser mit den üblichen Hacks, d.h. ohne Hack für alle IEs (d.h. 5 bis 7), und mit Star-Hack für IE 5/6 etc. Das geht natürlich auch, wenn Du die CSS-Regeln im Quelltext belassen möchtest. In jedem Falle würde ich persönlich nie mehr als einen CC im Head haben wollen.

heiko_rs 07.05.2007 17:40

Zitat:

Zitat von sanpedro (Beitrag 332371)
1. den IE 7 anspricht –> <!--[if lt IE 7]>

lt = "less than", also "kleiner als 7", also IE 5 & 6. Für ausschließlich IE 7 läßt Du das lt einfach weg.

Zitat:

Zitat von sanpedro (Beitrag 332371)
Meine Bedingung –> IE kleiner als 7 –> <!--[if IE] < 7>

Macht das Sinn? Schreibt man das so?

Ne ;)

sanpedro 07.05.2007 18:06

Oh du heilige Kuh! :shock:
Das "lt" hab ich gar nie richtig entschlüsseln können. Und hab daraus so allerlei Überlegungsfehler gemacht… Und dann stand die eckige Klammer noch falsch!

Es sieht jetzt so aus…

<!--[if lt IE 7]>
<style type="text/css" media="screen">
body {behavior: url(csshover.htc); font-size: 100%;}
#menu ul li a {height: 1%;}
#menu ul ul {top: 20px;}
}
</style>
<![endif]-->

<!--[if IE 7]>
<style type="text/css" media="screen">
#menu ul ul {top: 20px;}
</style>
<![endif]-->


… und ist zugegebenermassen nicht sehr elegant. Besser wäre eigenes IE-CSS. Das stimmt schon so. Zumindest funzt es jetzt wie es soll.

Danke für die schnelle Hilfe!

heiko_rs 07.05.2007 19:59

Zitat:

Zitat von sanpedro (Beitrag 332378)
Besser wäre eigenes IE-CSS.

Ja, und selbst wenn Du die Hacks erstmal im Quelltext stehen lassen möchtest, geht auch das wie von mir beschrieben, und damit auch deutlich kürzer (hab's mal schnell zusammenkopiert und um den Star-Hack erweitert):

Code:

<!--[if IE]>
<style type="text/css" media="screen">
#menu ul ul {top: 20px;}
* html body {behavior: url(csshover.htc); font-size: 100%;}
* html #menu ul li a {height: 1%;}
</style>
<![endif]-->

Es genügt ein CC statt zwei, und drei Regeln statt vier.

threadi 07.05.2007 20:06

Zitat:

Zitat von sanpedro (Beitrag 332371)
Ahm, ehm…

Ich benötige eigentlich eine Bedingung, die mir

1. den IE 7 anspricht –> <!--[if lt IE 7]>

2. alle vorherigen Versionen anspricht. Meine Bedingung –> IE kleiner als 7 –> <!--[if IE] < 7>

Macht das Sinn? Schreibt man das so?

Nein, aber es geht so:

Code:

<!--[if lte IE 7]>
"lte" = "lower than and equal"

Und:

Code:

<!--[if gte IE 6]>
wäre für alle 6er und größer.

heiko_rs 07.05.2007 20:09

Zitat:

Zitat von threadi (Beitrag 332387)
Code:

<!--[if lte IE 7]>

Gleichbedeutend mit <!--[if IE]> ;)

threadi 07.05.2007 20:12

yop, aber wäre auch interessant für den Fall: <!--[if lte IE 6]> ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:44 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023