Moin!
Also mein Layout-Problem ist einfach erklärt und (unendlich) schwer zu lösen. Vielleicht habe ich aber auch ein paar Möglichkeiten übersehen. Klärt mich auf, falls ihr eine Lösung kennt.
Optisch soll das Ganze aussehen, wie auf dem Bild im Anhang. D.h. ich habe mehrfach solche "Layer" untereinander. Und zu jedem Layer gehört eine Blaue Box.
Es geht hier nur um das Design eines einzelnen Layers.
Ein Layer besteht aus
- einer vorgegebenen Höhe (Anhaltspunkt 20px) und
- einer beliebigen Breite. (Die Breite wird auch fest vorgegeben und ist in jedem Fall größer als der Bildschirm (Anhaltspunkt 10000px))
Rechts sieht man die Blaue Box, ihre Höhe ist 100% des Layers. D.h. wenn ich den Layer in der Höhe verändere, ändert sich die Box auch.
So weit, so einfach.....
Jetzt kommt der happige Teil: Die Positionierung der Box!
Die Box soll IMMER am rechten Bildschirmrand kleben und natürlich IM Layer liegen. Da die Layer nun ziemlich breit sind, ist es klar, dass man dort scrollen kann. D.h. Wenn ich nach links/rechts scrolle, soll sich nur(!) der Inhalt des Layers verschieben, die Blaue Box bleibt aber an Ort und Stelle.
Außerdem muss es wie gesagt möglich sein, die Layer dynamisch zu vergrößern bzw. zu verkleinern (und die Blauen Boxen dann automatisch auch).
Beachte: Es können ruhig 100 Layer oder mehr werden. D.h. es gibt dann auch noch vertikale Scrollbalken
Das Projekt ist komplett mit dem Google Web Toolkit (GWT) geschrieben, von daher wäre eine Lösung in JavaScript natürlich möglich, ABER es ist verdammt umständlich und überhaupt nicht performant bei ca. 5000 Layern! (Vielleicht waren meine Algorithmen auch zu mies)...
Daher möchte ich eine Lösung OHNE JavaScript. Ich bin für jeden Hinweis dankbar
Bisher hab ich auf der Suche etwas gefunden, was ineinander verschachtelte 'position: fixed' Panels sind. Allerdings habe ich das Gefühl, dass ich es damit nicht umsetzen kann.
EDIT: Es ist im Grunde egal, ob die Blaue Box IM oder neben dem Layer liegt (da diese eh alles verdeckt was drunter ist). Hauptsache ist, dass es irgendwie umsetzbar ist...
Also mein Layout-Problem ist einfach erklärt und (unendlich) schwer zu lösen. Vielleicht habe ich aber auch ein paar Möglichkeiten übersehen. Klärt mich auf, falls ihr eine Lösung kennt.
Optisch soll das Ganze aussehen, wie auf dem Bild im Anhang. D.h. ich habe mehrfach solche "Layer" untereinander. Und zu jedem Layer gehört eine Blaue Box.
Es geht hier nur um das Design eines einzelnen Layers.
Ein Layer besteht aus
- einer vorgegebenen Höhe (Anhaltspunkt 20px) und
- einer beliebigen Breite. (Die Breite wird auch fest vorgegeben und ist in jedem Fall größer als der Bildschirm (Anhaltspunkt 10000px))
Rechts sieht man die Blaue Box, ihre Höhe ist 100% des Layers. D.h. wenn ich den Layer in der Höhe verändere, ändert sich die Box auch.
So weit, so einfach.....
Jetzt kommt der happige Teil: Die Positionierung der Box!
Die Box soll IMMER am rechten Bildschirmrand kleben und natürlich IM Layer liegen. Da die Layer nun ziemlich breit sind, ist es klar, dass man dort scrollen kann. D.h. Wenn ich nach links/rechts scrolle, soll sich nur(!) der Inhalt des Layers verschieben, die Blaue Box bleibt aber an Ort und Stelle.
Außerdem muss es wie gesagt möglich sein, die Layer dynamisch zu vergrößern bzw. zu verkleinern (und die Blauen Boxen dann automatisch auch).
Beachte: Es können ruhig 100 Layer oder mehr werden. D.h. es gibt dann auch noch vertikale Scrollbalken
Das Projekt ist komplett mit dem Google Web Toolkit (GWT) geschrieben, von daher wäre eine Lösung in JavaScript natürlich möglich, ABER es ist verdammt umständlich und überhaupt nicht performant bei ca. 5000 Layern! (Vielleicht waren meine Algorithmen auch zu mies)...
- Blaue Box liegt IM Layer und bekommt per CSS 'height: 100%;'. Dann muss ich per JS die horizontalen ScrollEvents abfangen und jede Box einzeln mit CSS 'left' anpassen. Das dann für 5000 Elemente und ununterbrochen beim Scrollen. Ganz schön kacke ...
- Blaue Box mit 'position: absolute' (außerhalb des Layers) an den rechten Rand tackern 'right: 0'. Und dann die vertikalen ScrollEvents abfangen und die Boxen neu setzen. Dieser Algorithmus läuft noch langsamer als Nr.1...
Daher möchte ich eine Lösung OHNE JavaScript. Ich bin für jeden Hinweis dankbar
Bisher hab ich auf der Suche etwas gefunden, was ineinander verschachtelte 'position: fixed' Panels sind. Allerdings habe ich das Gefühl, dass ich es damit nicht umsetzen kann.
EDIT: Es ist im Grunde egal, ob die Blaue Box IM oder neben dem Layer liegt (da diese eh alles verdeckt was drunter ist). Hauptsache ist, dass es irgendwie umsetzbar ist...