D(e)CSS ;-) und Javascript
Strauch
- css
Hallo,
ich habe mal eine Frage, ich will in meiner *.css datei ein javascript einbauen, was für den netscape und den internetexplorer verschieden Schriftgrößen angibt. (Da der Netscape ja immer eine "stufe" kleiner Darstellen muß). Das ist ja soweit noch ganz einfach.
Wenn jetzt aber jemand mit dem ie ohne JavaScript auf die Seite kommt, hat da jemand eine Idee das dann eine standartgröße angabe genommen wird und nur in dem fall falls einer mit dem netscape drauf kommt eine andere größe gewählt wird.
Ich hatte mir schon überlegt, mit JavaScript (falls Netscape) größe 10 zu laden, und dann mit javascript einen kommentar starten <!-- dann das Javascript beenden. Dann kommt ganz normal die angabe schriftgröße 9 und danach wird einfach ein kommentar geschlossen !!-->
Hat bisher aber nie so richtig geklappt. Hat da einer noch andere Idee, das nur bei aktiviertem JavaScript der Netscape eine eigene Schrift bekommt, aber der ie auch ohne javascript eine schriftart präsentiert bekommt.
Ist irgendwie kompliziert.
Gruß
Strauch
Hi Strauch
ich habe mal eine Frage, ich will in meiner *.css datei ein javascript einbauen, was für den netscape und den internetexplorer verschieden Schriftgrößen angibt. (Da der Netscape ja immer eine "stufe" kleiner Darstellen muß). Das ist ja soweit noch ganz einfach.
In der .css-Datei dürfen nur style-sheet Angaben angegeben werden.
Die Lösung für Dein Problem findest Du unter:
<../../sfarchiv/2000_3/t20697.htm#a105153>
Ist irgendwie kompliziert.
Dachte ich auch - stimmt aber nicht ;-)
Grüße,
Martin
Ich habe da noch ein paar Fragen zu, du schreibst ich darf keine Informationen überschreiben. Ich will das aber ungefähr so machen: standartmäßig wird immer schriftgröße 9 gewählt (auch ohne javascript). Wenn jetzt einer mit dem Netscape auf meine Seite kommt (der muß bei css so oder so javascript aktiviert haben, sonst läuft ja garnichts). Soll er auf Schriftgröße 10 hochgesetzt werden. Damit überschreibe ich dann ja den alten Wert 9 und dann gibt es Probleme? Hab ich das so richtig verstanden?
Gruß
strauch
Wenn jetzt einer mit dem Netscape auf meine Seite kommt (der muß bei css so oder so javascript aktiviert haben, sonst läuft ja garnichts). Soll er auf Schriftgröße 10 hochgesetzt werden. Damit überschreibe ich dann ja den alten Wert 9 und dann gibt es Probleme?
Nö, wieso Probleme?
Szenario 1 - kein JavaScript: Unabhängig vom Browser wird Schriftgröße 9 gewählt.
Szenario 2 - JavaScript: Wenn Besucher mit Netscape surft, wird das css-file geladen, daß die Netscape-spezifischen Styles definiert. Bei allen anderen Besuchern wird weiterhin wie im 1. Szenario halt Schriftgröße 9 gewählt.
Diese Lösung hat im Gegensatz zu der von sprain vorgeschlagenen (..if (BrowserA..)..if (BrowserB...)...) den entscheidenden Vorteil, das auch o h n e JavaScript extern definierte Styles verwendet werden können - die Netscape-Usern hätten dann mit einem gewissen ästhetischen Defizit zu leben...
Grüße,
MArtin
Hi Martin,
Nö, wieso Probleme?
Szenario 1 - kein JavaScript: Unabhängig vom Browser wird Schriftgröße 9 gewählt.
Szenario 2 - JavaScript: Wenn Besucher mit Netscape surft, wird das css-file geladen, daß die Netscape-spezifischen Styles definiert. Bei allen anderen Besuchern wird weiterhin wie im 1. Szenario halt Schriftgröße 9 gewählt.
Das ist leider nicht ganz so leicht - NS stürzt bei einer solchen Konstruktion sehr gern ab, wenn er zwei oder mehrere Angaben für das selbe Verhalten des selben Elementes findet. Außerdem denke ich, dass eine solche Konstruktion nicht validierbar ist.
Grüße,
Utz
Also der Netscape ist echt scheiße.
Schriftgröße 8 ist zu kleine und 9 ist zu groß, auch wenn ich es in Pixel angeben bringt es nichts, da bleibt immer so ein "großer" Sprung drin.
Ich glaube ich lasse es dann einfach so wie es ist.
Danke für eure Hilfe.
Früher oder Später werde ich es noch brauchen.
Gruß
strauch
Hi Utz,
Das ist leider nicht ganz so leicht - NS stürzt bei einer solchen Konstruktion sehr gern ab, wenn er zwei oder mehrere Angaben für das selbe Verhalten des selben Elementes findet. Außerdem denke ich, dass eine solche Konstruktion nicht validierbar ist.
Ähmm, Du weißt schon, dass ich Deine/Eure Lösung referenziert hatte??
Grüße,
Martin
Hi Martin,
Ähmm, Du weißt schon, dass ich Deine/Eure Lösung referenziert hatte??
jau, schon klar - aber da steht genau diese Warnung auch schon mal drin. *g*
Grüße,
Utz
Hi Strauch,
(...) Damit überschreibe ich dann ja den alten Wert 9 und dann gibt es Probleme? Hab ich das so richtig verstanden?
Ja, hast Du. Eine in der Standard-CSS-Datei gemachte Angabe kann nicht ohne Probleme durch eine zweite CSS-Datei überschrieben werden. Es gibt IMHO zwei Lösungsmöglichkeiten:
1. Du schreibst die Klassenzuordnungen dynamisch per JS und Browserweiche in's HTML, etwa so:
<script type="text/javascript">
if(document.all) {
document.write('<p class="ie">');
}
if(document.layers) {
document.write)('<p class="ns">');
</script>
<noscript>
<p class="ie">
</noscript>
Mit der Konstruktion musst Du keine CSS-Angaben überschreiben - es wird je nach Browser einfach auf unterschiedliche Klassen referenziert. Wenn Du das so machst, brauchst Du die Zuschaltung bzw. Browserweiche bei der CSS-Referenzierung gar nicht mal.
2. Lege Deine Standardschriftgröße herkömmlich über <font> fest, und überschreibe diese Angabe nur im NS mit CSS - damit sollte es keine Probleme geben.
Grüße,
Utz
Moin Andre
Ist irgendwie kompliziert.
Nö :-) Du musst dich nur von der Idee lösen, dass du mir (dem Besucher) die Schriftgröße vorschreiben kannst. Das geht nämlich nicht nicht. Und das ist auch gut so.
Viele Grüße
Swen
Moin Andre
Ist irgendwie kompliziert.
Nö :-) Du musst dich nur von der Idee lösen, dass du mir (dem Besucher) die Schriftgröße vorschreiben kannst. Das geht nämlich nicht nicht. Und das ist auch gut so.
Viele Grüße
Swen
betrachte es eher als einen Vorschlag damit nicht alles aus den Fugen gerät, aber wie du selber schreibst, wenn einer das nicht will dann kann man einem das auch nicht vorschreiben. Mein Sinn den ich nur haben will ist, das es in beiden Browser "möglichst" gleich aussieht, wenn du das so nicht haben willst, ist es nicht mein Problem. Ich kann aber eine website nicht so programmieren das sie bei den "individuellen" Einstellungen der Besucher vernüftig aussehen, was aber auch nur sehr wenige Leute machen.
Wenn jemand z.B. mit 14punkten und courier surft braucht er sich nicht wundern, warum alles aus den nähten Platz.
Schönes Webdesign kannst du so aber auch nicht sehen.
Gruß
strauch
Moin Strauch,
Wenn jemand z.B. mit 14punkten und courier surft braucht er sich nicht wundern, warum alles aus den nähten Platz.
Was macht dich so sicher, dass nicht gerade ich der Kunde bin, den dein Auftraggeber so gern erreichen würde? Und der sich mit Grausen abwendet, wenn er eine Seite sieht, die so etwas selbstverständliches wie unterschiedlich große Darstellungen nicht beherrscht?
Schönes Webdesign kannst du so aber auch nicht sehen.
Oh, doch. Denn "schön" ist subjektiv :-) Und _ich_ finde Seiten dann schön, wenn sie nicht unleserlich oder gar unbenutzbar werden, nur weil meine Auzgen heute mal wieder nicht so wollen wie ich. Und dann sehe ich sogar noch mehr: Ich sehe dir Arbeit von "Designern", die ihre Herkunft aus dem Druckbereich nicht nicht überwunden haben :-)
Viele Grüße
Swen
Was macht dich so sicher, dass nicht gerade ich der Kunde bin, den dein Auftraggeber so gern erreichen würde? Und der sich mit Grausen abwendet, wenn er eine Seite sieht, die so etwas selbstverständliches wie unterschiedlich große Darstellungen nicht beherrscht?
Klar bis zu einem gewissen Grad ist das möglich aber ich kenne keine website die bei 14 curier noch "ordentlich" aussieht, weil die Schrift einfach nur "breit" ist. Da sind die umbrüche dann ganz anders etc. und dann kan ein Menü auch schonmal etwas "auswandern" wenn es nicht aus grafiken besteht. Nunja kann gut sein das du einer der Kunden bist, aber man kann es nie 100% korrekt machen, so das es wirklich alle ohne Fehler sehen können. Ich denke es geht nicht nur darum möglichst flexibel zu Programmieren man kann als user natürlich auch alles unmöglich machen, egal wie gut man die Sache Programmiert.
Wenn ich fragen darf, wieso hast du zum einen eigene Einstellungen und zum anderen was für welche du denn hast?
Moin
Wenn ich fragen darf, wieso hast du zum einen eigene Einstellungen und zum anderen was für welche du denn hast?
Ich habe (jahreszeitlich schwankend) Sehschwierigkeiten und lege deshalb gesteigerten Wert darauf, dass ich die Schriftgröße selbst bestimmen kann. Wenn es besonders grell ist, dann lasse ich gern auch die Grafiken weg (das ist bei mir also keine Frage der Geschwindigkeit). Dann erwarte ich vernünftige Alt-Texte.
Viele Grüße
Swen
Ich habe (jahreszeitlich schwankend) Sehschwierigkeiten und lege deshalb gesteigerten Wert darauf, dass ich die Schriftgröße selbst bestimmen kann. Wenn es besonders grell ist, dann lasse ich gern auch die Grafiken weg (das ist bei mir also keine Frage der Geschwindigkeit). Dann erwarte ich vernünftige Alt-Texte.
das ist nicht schön, aber ich werde in Zukunft drauf Achten das auch DU meine Seiten lesen kannst. Also Schriftgröße verändern war kein problem bei meiner Seite, sieht dann zwar nicht mehr so aus wie ich es will, aber es "funktioniert" noch.
ALT Texte sind sowieso pflicht. und wenn Hintergrund dann kontrakstreich nicht violette schrift auf blauem hintergund ;-)
Gruß
strauch
Hallo !
Nun, warum machst du nicht einfach zwei verschieden css-Dateien, eine für den NS und eine für IE. Je nach Browser lädst du dann die richtige.
if (navigator.appName == "Microsoft Internet Explorer"){
document.write('<LINK REL=STYLESHEET TYPE="text/css" HREF="../formatex.css">');}
else{
document.write('<LINK REL=STYLESHEET TYPE="text/css" HREF="../formate.css">');}
So mache ich das zumindest und es funktioniert wunderbar
Ciao, sprain
Die möglichkeit geht auch, allerdings hat sie den Nachteil das wenn jemand beim ie ohne js auf meine Seite kommt er garkein css hat und ich will eben das auch "jener" css hat.
Gruß
strauch