Ja, den Angaben zufolge gibt es eine Möglichkeit.
Ich stimme zwar zu, dass die Antwort von Graeme Blackwood akzeptiert werden sollte, weil sie das Problem praktisch löst, aber es sollte beachtet werden, dass ein festes Element kann relativ zu seinem Behälter positioniert werden.
Ich habe zufällig festgestellt, dass bei der Anwendung
-webkit-transform: translateZ(0);
mit dem Körper verbunden ist, wird ein festes Kind relativ zum Körper (und nicht zum Ansichtsfenster) erstellt. Also meine festen Elemente left
y top
Eigenschaften waren nun relativ zum Container.
Also habe ich ein wenig recherchiert und herausgefunden, dass das Thema bereits von Eric Meyer und auch wenn es sich wie ein "Trick" anfühlte, stellte sich heraus, dass dies Teil der Spezifikationen ist:
Für Elemente, deren Layout durch das CSS-Box-Modell bestimmt wird, ist jeder Wert als "none" für die Transformation zur Erstellung sowohl eines Stapelkontext und einen enthaltenden Block. Das Objekt fungiert als enthaltender Block für fest positionierte Nachkommen.
http://www.w3.org/TR/css3-transforms/
Wenn Sie also eine beliebige Transformation auf ein übergeordnetes Element anwenden, wird dieses zum enthaltenden Block.
Aber...
Das Problem ist, dass die Implementierung fehlerhaft/kreativ zu sein scheint, da sich die Elemente auch nicht mehr wie festgelegt verhalten (auch wenn dieser Teil nicht Teil der Spezifikation zu sein scheint).
Das gleiche Verhalten ist in Safari, Chrome und Firefox zu beobachten, nicht aber im IE11 (wo das fixierte Element weiterhin fixiert bleibt).
Eine weitere interessante (undokumentierte) Sache ist, dass, wenn ein festes Element innerhalb eines transformierten Elements enthalten ist, während sein top
y left
Eigenschaften werden nun auf den Container bezogen, unter Berücksichtigung der box-sizing
ist, erstreckt sich der Bildlaufkontext über den Rand des Elements, als ob box-sizing auf border-box
. Für einige Kreative da draußen, könnte dies möglicherweise ein Spielzeug werden :)
TEST