forum Sea of Sin / Startseite sitemap

Sea of Sin / Blog

Zentrum der Langeweile

scrollbare DIV's

2007/03/20 von de_henne
Da ich etwas krank bin, entschuldigt bitte mein Schreibstil.
Ja auch ein Informatiker wird einmal krank ;-) die normale Waldluft tut mir nicht gut. Da ist man einmal in seiner nicht gewöhnlichen Umgebung (Serverraum) und schon passierts ... aber nun zum heutigen Thema ...

Vielleicht schon ein alter Hut aber irgendwie benötige ich es ständig. Vor allem für Webanwendungen.

Als kleines Beispiel für was scrollbare Div's zu gebrauchen sind wäre:
Oftmals besitzt man verschiedene Anzeigebereiche wie eigene Auswahllisten. Diese sollen sich natürlich wie richtige Auswahllisten verhalten. Dazu gehört natürlich auch, dass Verhalten wenn zu viele Einträge in der Auswahlliste vorhanden sind, dass dann auch Scrollbalken erscheinen.

Nun wie geht man hier vor?

Als erstes wird ein herkömmliches Div benötigt.

  1. <div></div>


Entweder vergeben wir diesem eine ID oder eine Klasse um CSS darauf anzuwenden.

  1. <div id="scroll"></div>


Nun werden CSS Anweisungen verwendet, welche dem DIV festlegen dass es bei zu großem Inhalt scrollen soll. Damit es auch in allen Browser funktioniert, benötigen wir 3 Angaben.

  1. overflow:auto;
  2. overflow-y:auto;
  3. overflow-x:auto;


Was macht Overflow? Overflow sagt, wie sich ein Element verhalten soll wenn der Inhalt grösser ist wie der Bereich der zur Verfügung steht.
Da IE, Opera und Firefox jedoch diese Eigenschaft extrem unterschiedlich interpretieren müssen alle 3 Angaben verwendet werden.

Der Wert auto bedeutet, wenn der Inhalt zu groß ist, soll der Browser entscheiden was passiert. Wenn alle 3 Angaben gemacht werden, entscheiden sich alle 3 Browser für die Scrollbars. Neben "auto" gibt es noch "hidden" (Inhalt der zu gross ist nicht anzeigen), scroll (immer Scrollbalken anzeigen) oder visible (trotzdem anzeigen wenn der Inhalt zu groß ist)

Zurück zu unseren CSS Anweisungen. Dies könnten nun so aussehen:

Das DIV scrollt natürlich nur, wenn eine Höhe angegeben wurde.

  1. #scroll {
  2. overflow:auto;
  3. overflow-y:auto;
  4. overflow-x:auto;
  5. height: 200px;
  6. }


Hmm, jetzt gibt es aber noch ein Problem. Opera und IE können in dem DIV per Mausrad in dem DIV scrollen. Nur der Firefox macht irgendwie hier extrem Zicken :-)
Aber auch hier gibt es Abhilfe

  1. -moz-user-focus: normal;


D.h. unsere fertige CSS Anweisungen sieht nun folgendermaßen aus:

  1. #scroll {
  2. overflow:auto;
  3. overflow-y:auto;
  4. overflow-x:auto;
  5. height: 200px;
  6. -moz-user-focus: normal;
  7. }


Vielleicht hilft dies einigen, vor allem die moz-user-focus Eigenschaft sollte etwas unbekannt sein.
Bei Fragen, nicht zögern und einfach im Forum schreiben.


greetz henbug

 
  • Keine Kommentare