Scrollbar-Attribute eines DIV's setzen
Hans
- css
Hi !
So, immer noch gleiches Problem:
<DIV height:100px blabla> KEINE WIDTH-Angabe, da die Tabelle mal breiter, mal schmaler ist !
<TABLE>
irgendwas
</TABLE>
</DIV>
Der Scrollbar erscheint am rechten Rand und egal, welche Attribute ich beim DIV setze, er bewegt sich nicht exakt rechts neben die Tabelle (vom Attribut width einmal ausgenommen).
Bei meiner Suche im Internet hatten die Leute alle das Problem, das sie den Scrollbar NICHT nach rechts hinbekommen. Also genau mein Gegenteil. Dabei fand ich, daß man einem Scrollbar Attribute geben kann, die sich aber alle auf die Farbe beziehen. Gibt es eine Art "Scrollbar-padding"-Attribut oder sonst eine Möglichkeit, dieses blöde Teil "mit Hammer und Nagel" an eine Position zu pinnen?
Danke!
Gruß
Hans
Hallo,
So, immer noch gleiches Problem: [...]
Welches? Grottenfalsches HTML? Oder dass man aus deinem Posting nicht nachvollziehen kann, was du uns eigentlich sagen/fragen willst?
Du möchtest dich offensichtlich mit den Grundlagen von HTML und CSS intensiv befassen.
Im Bezug aufs Scrollen könnte dich insbesondere die overflow-Eigenschaft interessieren
Viele Grüße
Patrick
Hallo Patrick,
schön, daß Du Dich freiwillig meldest, mir die Lösung für mein Problem zu nennen.
Also: Ich habe ein DIV, in dem sich eine Tabelle befindet. Das DIV ist deutlich kleiner als die Tabelle und so erscheint am rechten Rand der Tabelle ein Scrollbar. Dieses Verhalten passiert beim IE6.0 und IE7.0
Beim IE5.0 erscheint der Scrollbar am ganz rechten Rand des Fensters. Dadurch entsteht viel freier Raum zwischen der Tabelle und dem Scrollbar. Wie schaffe ich es, unter IE5.0, den Scrollbar neben die Tabelle zu bekommen, damit ich den gleichen Effekt wie unter IE6.0 und IE7.0 habe?
Nachdem Du in großkotziger Art eine Antwort zu meinem vorigen Posting gegeben hast, erwarte ich nun die perfekte Lösung.
Gruß
Hans
Hallo,
schön, daß Du Dich freiwillig meldest, mir die Lösung für mein Problem zu nennen.
Tu ich das?
Nachdem Du in großkotziger Art eine Antwort zu meinem vorigen Posting gegeben hast, [...]
Ich bezog mich dabei auf die Tipps fü Fragende in der Charta des Forums (die ich leider vergass zu verlinken), die du nun hoffentlich gelesen hast. Insbesondere Punkt 1, 3 und 4 der Liste könnte für dich interessant sein.
Aus deinem Posting geht nicht hervor, was genau du willst. Genausowenig deutlich bist du darin, uns mitzuteilen, was du unternommen hast, um zu erreichen was du erreichen willst. Dein Quellcode-Beispiel sagt zudem nichts über dein Problem aus. Meine Antwort war dementsprechend ebenso ungenau.
erwarte ich nun die perfekte Lösung.
Find ich gut. Anhand der Links in meinem ersten Posting bist du bestimmt in der Lage, sie dir selbstständig zu erarbeiten. Sollte es nicht gelingen, so kannst du gerne eine präzisere (s.o.) Problemstellung mit Erläuterung deiner bisherigen Versuche posten.
Viele Grüße
Patrick
Hallo Patrick,
also:
<DIV STYLE="height: 200px; overflow:auto; ruby-align: left; float:left; position:absolute; top: 100px; overflow-x: hidden;">
<TABLE>
<TR>
<TD>viele</TD><TD>Spalten</TD>
</TR>
</TABLE>
</DIV>
So, die Tabelle ist recht lang, deshalb erscheint auch an der Seite ein Scrollbar. Der Scrollbar wird aber automatisch rechts außen positioniert, nicht rechts neben der Tabelle (bei IE5.0). Bei IE6.0 und IE7.0 erscheint der Scrollbar rechts neben der Tabelle.
Egal, ob ich ein padding ins DIV mache, die Schriftrichtung von ltr nach rtl ändere, die Änderungen werden zwar sichtbar, aber immer ist die Tabelle entweder ganz links und der Scrollbar ganz rechts oder umgekehrt.
Da die Tabelle von ihrer Breite her recht dynamisch ist, macht eine statische "width=xxx%"-Breitenangabe beim DIV keinen Sinn. Die Tabelle ist darüberhinaus auch mit "width auto" versehen. Das Wegnehmen dieses Attributes macht keinen Unterschied.
Das Hinzufügen von "<DOCTYPE ...>" hat auch keine Änderung gebracht. Mir scheint, daß der IE5.0 einfach die ganze Breite des Browsers für sein DIV benutzt, wenn keine explizite Breitenangabe vorhanden ist.
Daher die Frage, wenn sich das DIV schon nicht auf das breiteste Objekt, die Tabelle, beschränkt, sondern die ganze Breite einnimmt, ob man wenigstens den Scrollbar irgendwie so manipulieren kann, daß er neben der Tabelle steht. Ich habe nur Attribute gefunden, die die Farbe des Scrollbars, nicht aber seine Position beeinflussen.
Also, hast Du für so etwas eine Lösung?
Gruß
Hans
hi,
Mir scheint, daß der IE5.0 einfach die ganze Breite des Browsers für sein DIV benutzt, wenn keine explizite Breitenangabe vorhanden ist.
Durch die absolute Positionierung sollte sich die Breite nach dem Inhalt richten.
(Btw: float und absolute Positionierung zusammen ergeben nicht viel Sinn, float bekommt automatisch den Wert none.)
Daher die Frage, wenn sich das DIV schon nicht auf das breiteste Objekt, die Tabelle, beschränkt,
Das willst du doch gar nicht - dafür hast du doch overflow benutzt, oder?
Also, hast Du für so etwas eine Lösung?
Ich sehe immer noch nicht ganz, was du wirklich erreichen willst.
Du hast absolut positioniert, und keine Breite angegeben - also willst du, dass sich die Breite nach dem Inhalt richtet.
Gleichzeitig willst du - per overflow - dass der Inhalt das Element nicht "ausdehnt", sondern Scrollbalken erscheinen, wenn er "breiter" als sein umgebendes Element ist.
Dass ist doch ausreichend widersprüchlich, um sich nicht über unterschiedliche Interpretationen zu wundern, oder?
gruß,
wahsaga
Hi Wahsaga,
so, den ersten Teil Deiner Antwort habe ich umgesetzt: float rausgeworfen. IE7.0 ist immer noch OK, IE5.0 keine Änderung.
Ich sehe immer noch nicht ganz, was du wirklich erreichen willst.
Du hast absolut positioniert, und keine Breite angegeben - also willst du, dass sich die Breite nach dem Inhalt richtet.
Ja. Das DIV soll so breit wie die Tabelle sein.
Gleichzeitig willst du - per overflow - dass der Inhalt das Element nicht "ausdehnt", sondern Scrollbalken erscheinen, wenn er "breiter" als sein umgebendes Element ist.
Dass ist doch ausreichend widersprüchlich, um sich nicht über unterschiedliche Interpretationen zu wundern, oder?
Hm, vielleicht mache ich da einen Fehler, aber wenn ich aus dem "position:absolute" ein "position:relative" mache, dann erscheint der Scrollbar unter IE7.0 auch auf der ganz rechten Seite (IE5.0: keine Aenderung). Ich meine, wenn meine Definition schon Blödsinn ist, warum ist bei IE6.0/7.0 alles so, wie ich es will, unter IE5.0 kommt es so, wie Du es interpretierst?
Ich meine, wie würde denn die Definition korrekt aussehen? (Tabelle, die in der Breite dynamisch ist, in der Höhe beschränkt, nur ein Teil sichtbar, dafür "scroll-able" mit Scrollbalken direkt rechts neben der Tabelle)
Gruß
Hans
Hi wahsaga,
so, jetzt habe ich mal alle DIV's relativ positioniert, unter IE7.0 sieht es gut aus, IE5.0 verschiebt das Ganze um einen halben Bildschirm nach unten. Die Scrollbars sind weiterhin auf der ganz rechten Seite, so als ob es ihn überhaupt nicht interessiert.
Die DIV's haben folgendes Schema:
<DIV STYLE="height:auto; float: left; position:relative;">
...
</DIV>
<DIV STYLE="height:200px; overflow:scroll; float: left;position:relative; overflow-x: hidden;">
<TABLE>
<TR><TD>Tabelle, in der die Scrollbars kommen</TD></TR>
</TABLE>
</DIV>
<DIV STYLE="height:auto; float: left; position:relative;">
...
</DIV>
Und dann das gleiche nochmal.
Was kann man da sonst noch einbauen?
Gruß
Hans
So, "Hammer und Nagel" gefunden:
IE5.0:
Solange die Tabelle der DIVs nicht größer als die height des DIV sind, gibt es keine Probleme. Bei overlay zieht sich das DIV auf die ganze Breite.
Da ich die Tabellen via perl-Skript male und auch die Überschriften entsprechend in der Breite anpasse, damit sie zu der scrollenden Tabelle passen, nehme ich die Anzahl der Buchstaben in der Überschriftenzeile * font-größe als Wert für das width-Attribut des DIV.
Soweit so gut. Wenn da nicht noch das "float:left"-Attribut wäre. Dies sorgt dafür ,daß das ganze Bild nach unten verschoben wird. Also, "float:left" aus den DIVs mit den Tabellen raus und oh Wunder (im wahrsten Sinne des Wortes): Die DIV's und die Scrollbars sind wo sie sein sollen und bleiben dort in alle Ewigkeit - Amen.
Gruß
Hans