browserabfrage in css
teresa
- css
0 Richard0 teresa0 Cheatah0 Axel Richter0 D.R.0 MudGuard
0 Axel Richter0 D.R.
0 Powl0 teresa
habe gerade versucht die höhenangabe von hight="auto" auf eine fixe höhe einzustellen, jedoch gehen der internet explorer und firefox unterschiedlich damit um.
kann man in einem css-file eine browserabfrage machen?
so in etwa: if ff then height=auto bzw. if ie then height=400px
Hallo teresa,
kann man in einem css-file eine browserabfrage machen?
so in etwa: if ff then height=auto bzw. if ie then height=400px
Fast. Conditional Comments
Beste Grüße
Hallo teresa,
kann man in einem css-file eine browserabfrage machen?
so in etwa: if ff then height=auto bzw. if ie then height=400pxFast. Conditional Comments
Beste Grüße
danke!
das bedeutet also, dass man zwar eine abfrage machen kann, um zwischen verschiedenen styleshees zu wählen, aber es gibt keine möglichkeit IN einem stylesheet eine solche abfrage zu machen.
beispiel:
<!--[if IE]>
#bereich {margin-right: 34%; margin-top: 10px; height: 600px}
<![endif]-->
#bereich {margin-right: 34%; margin-top: 10px; height: auto}
habe es probiert und erhalte eine fehlermeldung, aber vielleicht gibt es ja eine andere schreibweise?!
Hi,
Fast. Conditional Comments
abzuraten.
das bedeutet also, dass man zwar eine abfrage machen kann, um zwischen verschiedenen styleshees zu wählen, aber es gibt keine möglichkeit IN einem stylesheet eine solche abfrage zu machen.
Richtig. Zudem ist mir kein Fall bekannt, in dem eine _Browser_weiche in irgend einer Form sinnvoll gewesen wäre - egal worum es dabei ging.
<!--[if IE]>
#bereich {margin-right: 34%; margin-top: 10px; height: 600px}
<![endif]-->
#bereich {margin-right: 34%; margin-top: 10px; height: auto}
Mal abgesehen davon würde hierbei der IE zwei Regeln gleicher Spezifität sehen, so dass bei Konflikten die letzte gilt.
habe es probiert und erhalte eine fehlermeldung,
A propos nicht sinnvoll: Es war noch niemal im Verlaufe der Geschichtsschreibung der Menschheit sinnvoll zu sagen, man habe eine Fehlermeldung erhalten, ohne mitzuteilen, durch wen diese geschah, wie sie lautete und was Deine Analyse des Fehlers erbracht hat. Das ist hier allerdings nicht von Belang - vergiss Conditional Comments einfach wieder.
Cheatah
Hallo,
Richtig. Zudem ist mir kein Fall bekannt, in dem eine _Browser_weiche in irgend einer Form sinnvoll gewesen wäre - egal worum es dabei ging.
Im Prinzip richtig, aber ;-) leider muss man, wenn man diese richtige Grundregel hier konsequent anwendet, entweder den Anspruch an Gestaltungsmöglichkeiten mit CSS sehr weit herunterschrauben oder man muss den IE gezielt nicht beachten. Beides funktioniert in der Praxis nicht.
- vergiss Conditional Comments einfach wieder.
... um was stattdessen anzuwenden? Hacks?
viele Grüße
Axel
Hallo,
das bedeutet also, dass man zwar eine abfrage machen kann, um zwischen verschiedenen styleshees zu wählen,
Ja.
aber es gibt keine möglichkeit IN einem stylesheet eine solche abfrage zu machen.
beispiel:
<!--[if IE]>
#bereich {margin-right: 34%; margin-top: 10px; height: 600px}
<![endif]-->
#bereich {margin-right: 34%; margin-top: 10px; height: auto}
Nein, so nicht, nur mit Hacks, die Dir ja auch schon gezeigt wurden.
Entgegen Cheatahs Meinung empfinde ich CCs aber als die sauberste Lösung. Man erstellt ein Stylesheet für das allgemeine CSS und gibt dem IE innerhalb eines CCs in der Reihenfolge _hinter_ dem allgemeinen Stylesheet ein eigenes, in dem man Definitionen des allgemeinen CSS IE-spezifisch überschreibt. Das passiert, weil bei CSS gilt, dass die letzte Definition gleicher Spezifität für einen Selektor umgesetzt wird.
Beispiel:
<style type="text/css">
/*das allgemeine CSS*/
#bereich { margin-right: 34%; margin-top: 10px; height: auto; }
</style>
<!--[if IE]>
<style type="text/css">
/*das IE-only CSS*/
#bereich { height: 600px; }
</style>
<![endif]-->
Warum finde ich das besser als Hacks?
1. Hacks sind gezielte Syntaxverletzungen. Es steht also fehlerhafter Code im CSS.
2. Hacks stehen inmitten von normalen CSS-Angaben. Wenn sie mal ungültig werden müssen sie dort mühsam herausgeklaubt werden.
3. Hacks sind nicht logisch. Die Angaben in den CCs sind das schon.
Nachteil von CCs:
Jedes HTML-Dokument enthält diesen zusätzlichen Eintrag _nur für den IE_. Entweder so, wie oben oder eben so:
<link rel="stylesheet" type="text/css" href="basis.css">
<!--[if IE]>
<style type="text/css">@import url(ie.css);</style>
<![endif]-->
Die Hacks könnten im zentralen CSS benutzt werden. Das überwiegt aber die Nachteile meiner Meinung nach nicht.
viele Grüße
Axel
Hi,
Entgegen Cheatahs Meinung empfinde ich CCs aber als die sauberste Lösung. Man erstellt ein Stylesheet für das allgemeine CSS und gibt dem IE innerhalb eines CCs in der Reihenfolge _hinter_ dem allgemeinen Stylesheet ein eigenes, in dem man Definitionen des allgemeinen CSS IE-spezifisch überschreibt. Das passiert, weil bei CSS gilt, dass die letzte Definition gleicher Spezifität für einen Selektor umgesetzt wird.
Warum finde ich das besser als Hacks?
- Hacks sind gezielte Syntaxverletzungen. Es steht also fehlerhafter Code im CSS.
Nö, wenn man z.B. html>body ... schreibt, ist das keine Syntaxverlatzeung, sondern nur eine Schwäche des IE. Genauso verhält es sich bei Attributbedingten Selektoren usw. Selbst * html, würde ich nicht als Syntaxverletzung gelten lassen, da nur gesagt wird, dass der Hack nur dann funktionieren soll, wenn HTML ein Elternelement hat...
- Hacks stehen inmitten von normalen CSS-Angaben. Wenn sie mal ungültig werden müssen sie dort mühsam herausgeklaubt werden.
Dafür handelt es sich aber um eine zentrale Datei. Wenn CCs dagegen falsch gesetzt wurden, weil der IE 7 das z.B. immer noch nicht korrekt macht, müssen ALLE HTML-Dateien geändert werden. Das ist dann viel, viel aufwändiger!
- Hacks sind nicht logisch. Die Angaben in den CCs sind das schon.
Man muss sie nunmal kennen, das ist alles. Andererseits hast du natürlich Recht, ein Kindselektor ist ja z.B. nicht nur für Hacks wichtig.
Nachteil von CCs:
Jedes HTML-Dokument enthält diesen zusätzlichen Eintrag _nur für den IE_. Entweder so, wie oben oder eben so:<link rel="stylesheet" type="text/css" href="basis.css">
<!--[if IE]>
<style type="text/css">@import url(ie.css);</style>
<![endif]-->Die Hacks könnten im zentralen CSS benutzt werden. Das überwiegt aber die Nachteile meiner Meinung nach nicht.
Das kommt auf den Anwendungszweck an. Gibt es viele Stellen, die korrigiert werden müssen, dann sind CCs und ein zusätzliches Stylesheet erst Wahl. Handelt es sich dagegen um Kleinigkeiten, sind Hacks besser.
Einen schönen Dienstag noch!
Hi,
Selbst * html, würde ich nicht als Syntaxverletzung gelten lassen,
Ist ja auch keine. CSS hat erstmal nichts mit HTML zu tun, Beschränkungen von HTML (html-Element kann kein parent-Element haben) sind also auf CSS-Selektoren nicht anzuwenden.
Wird das CSS z.B. auf ein XML der Form
<bla>
<html>was</html>
</bla>
angewendet, muß das zu * html gehörige Ruleset angewendet werden.
cu,
Andreas
Hallo,
Warum finde ich das besser als Hacks?
- Hacks sind gezielte Syntaxverletzungen. Es steht also fehlerhafter Code im CSS.
Nö, wenn man z.B. html>body ... schreibt, ist das keine Syntaxverlatzeung, sondern nur eine Schwäche des IE. Genauso verhält es sich bei Attributbedingten Selektoren usw. Selbst * html, würde ich nicht als Syntaxverletzung gelten lassen, da nur gesagt wird, dass der Hack nur dann funktionieren soll, wenn HTML ein Elternelement hat...
Aber _property:value ist eine, gut, muss man nicht einsetzen ;-)
Ja, gut, dann steht eben sinnloser Quatsch, wie height:1px (IE-min-height ;-)), zoom:1 (hallo IE, rendere mal richtig!) oder display:inline (hallo IE, bitte margin nur 1 Mal!) im ansonsten gültigen CSS. Dass das dann syntaktisch korrekt da drin steht, macht es für mich nicht besser. Nein, Du überzeugst micht nicht von Hacks. Bei mir steht solcher sinnloser Quatsch _nur_ in einem IE-only-CSS.
Dafür handelt es sich aber um eine zentrale Datei. Wenn CCs dagegen falsch gesetzt wurden, weil der IE 7 das z.B. immer noch nicht korrekt macht, müssen ALLE HTML-Dateien geändert werden. Das ist dann viel, viel aufwändiger!
Naja, _so_ viel aufwändiger nun auch nicht, wenn man dateiübergreifendes Ersetzen einsetzen kann. Vor Allem ist es Azubi- delegierbar ;-), was man von Hacksuche in der großen CSS-Datei nicht sagen kann.
viele Grüße
Axel
Hi,
Nö, wenn man z.B. html>body ... schreibt, ist das keine Syntaxverlatzeung, sondern nur eine Schwäche des IE. Genauso verhält es sich bei Attributbedingten Selektoren usw. Selbst * html, würde ich nicht als Syntaxverletzung gelten lassen, da nur gesagt wird, dass der Hack nur dann funktionieren soll, wenn HTML ein Elternelement hat...
Aber _property:value ist eine, gut, muss man nicht einsetzen ;-)
kenn ich gar nicht...
Ja, gut, dann steht eben sinnloser Quatsch, wie height:1px (IE-min-height ;-)), zoom:1 (hallo IE, rendere mal richtig!) oder display:inline (hallo IE, bitte margin nur 1 Mal!) im ansonsten gültigen CSS. Dass das dann syntaktisch korrekt da drin steht, macht es für mich nicht besser. Nein, Du überzeugst micht nicht von Hacks. Bei mir steht solcher sinnloser Quatsch _nur_ in einem IE-only-CSS.
Man könnte eine HTML-Datei ja so einteilen, dass IE-Korrekturen z.B. immer ganz unten stehen und ein Kommentar darauf hinweist.
Am besten ist es natürlich, den IE einfach zu ignorieren. Dann hat man endlich eine saubere Datei. Alternativ könnte man auch * html {display:none;} schreiben ;-)[1]
Dafür handelt es sich aber um eine zentrale Datei. Wenn CCs dagegen falsch gesetzt wurden, weil der IE 7 das z.B. immer noch nicht korrekt macht, müssen ALLE HTML-Dateien geändert werden. Das ist dann viel, viel aufwändiger!
Naja, _so_ viel aufwändiger nun auch nicht, wenn man dateiübergreifendes Ersetzen einsetzen kann. Vor Allem ist es Azubi- delegierbar ;-), was man von Hacksuche in der großen CSS-Datei nicht sagen kann.
Und mit welchem (Quelltext)-Editor geht das? Oder meinst du Server-Technologien?
[1] So weit würde ich dann aber doch nicht gehen...
Ehrlich gesagt, ich verwende auch eine ganze Menge CCs auf meiner Hompage (teilweise für FF-Werbung, teilweise zu einfachen Fehlerkorrekturen).
Einen schönen Mittwoch noch!
Hallo,
dateiübergreifendes Ersetzen
Und mit welchem (Quelltext)-Editor geht das?
Mit einigen. SELFHTML verlinkt z.B. Phase 5 und HTML-Format.
viele Grüße
Axel
Moin,
schau mal unter CSS hacks ein wenig um Dich.
denkbar wäre:
#irgendwas {height:auto;}
* html #irgendwas {height:400px;}
Damit bestimmst Du height auto für alle Browser. Den Star html hack akzeptiert nur IE, somit kann man ihm die height:auto Anweisung mit 400px überschreiben.
Da gibbet so ville, die kann man aber nachlesen.
Netten Tag
^da Powl
#irgendwas {height:auto;}
- html #irgendwas {height:400px;}
>
> Damit bestimmst Du height auto für alle Browser. Den Star html hack akzeptiert nur IE, somit kann man ihm die height:auto Anweisung mit 400px überschreiben.
>
aja, habe offenbar nicht genau gelesen :(
vielen dank, damit komme ich schon mal weiter! :)
> [Da gibbet so ville, die kann man aber nachlesen.](http://www.google.de/search?hl=de&q=CSS+hacks&btnG=Google-Suche&meta=)
>
werd ich machen!