Steel: Browser ignorieren media=screen :-(

Beitrag lesen

Moin!

Aaach, ich glaube ich verstehe. Ich weise per JS die Eigenschaften overflow:auto und die Größe zu und und gebe *dabei* nicht explizit das "media" an. Deswegen wirds auf alle applied.

Richtig. Die JS style Eigenschaft macht keinen Unterschied.

(Warum eigentlich?)

Hast du eine bessere Lösung? Das Problem ist dass ich die Größe abhängig von der Höhe des Viewports setzen muss. Und das geht ja nur mit JS?!

CSS. 50% vom Viewport sind 50% vom Viewport, egal wie gross der ist. Wenn Du natuerlich Groessen in Abhaengigkeit von anderen groessen zuweisen willst, ist Js durchaus eine legitime Sache. Nur musst Du dann andere Wege beschreiten, wenn Du Darstellungen fuer verschiedene Medien brauchst. (s.u.)

Ich sehe keine Massangaben

Hmm, ist das wichtig? Wo würdest du die Massangaben einsetzen?

Wenn Der Browser wissen soll, wieviele von was er setzen muss, schon. Maeuse? Bowlingkugeln? Haselnusstoertchen? Pixel? em? Prozent? Jahre?

style.height = zahl + 'px'

;)

und was steht beim ersten Aufruf von document.getElementById('nsa').offsetHeight darin? Ich rate: Ein Leersting.

Keine Ahnung, mag sein. Nein, es wird die tatsächliche Höhe drin stehen, vermute ich. Wie gesagt, ich rufe die Funktion bei onLoad und onResize auf und das klappt soweit eigentlich toll.

Klar. Aber eine mit CSS gemachte Angabe ist Javascript unbekannt. Glaubs mir. Erst wenn Du diese Angabe mit JS setzt, kann JS sie auch auslesen. Computed Style ware hier ein Begriff zum googlen.

Was passiert, wenn Du das zuweisen per JS nicht tust?

Dann fehlt mir die Scrollleiste für die Scrolling-Area.

Aber sonst laeuft alles wie gewollt. Oder nicht? Ergo ist dein JS das Problem.

Hast Du schon versucht Styles fuer print zu benutzen?

Nein, ich dachte wenn ich sie einfach nur für screen zuweise sind sie bei printer leer, was eigentlich passt.

Nur: Wie mache ich das eigentlich mit JS?

Gar nicht. Das ist das Problem. Ich kenne jedenfalls keine Methode. Deshalb habe ich das hier geschrieben:

Schonmal versucht mit Klassen zu arbeiten, die Du per JS zuweist, statt, die Styleangaben direkt zu bearbeiten?

Das hört sich sehr interessant an aber leider fehlt mir da die Erfahrung bzw. was du genau meinst. Hast du zufällig einen Pointer dazu?

Das hilft Dir leider direkt auch nicht weiter. Du Koenntest zwar Klassen zuweisen, muesstest aber ja trotzdem mit JS den Hoehenwert festlegen.

<http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=class@title=Einen Link haette ich.>

Spontan habe ich keine konkrete Idee, wie Du Dein Problem loesen kannst. Du muesstest evtl. eine Printregel erschaffen die spezifischer ist, als was Du mit Javascript machst.

Wenn Du die Groessen nicht fest im CSS angeben kannst (gerne prozentual), also auf eine Berechnung mit JS angewiesen bist, Ist das eine verzwickte Sache.

Struppi hat mal ein paar Funktionen veroeffentlicht, die die Manipulation von Klassen ermoeglichen. (bin nicht sicher ob das mittlerweile alle Browser koennen)

So koenntest Du eine Klasse editieren die nur fuer den Screen benutzt wird. Eventuell muesstest Du noch mit einem print-style arbeiten.

Besten Dank mal dass du mich auf den richtigen Weg gebracht hast!

Och. Nicht dafuer.

--
"Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
      - T. Pratchett