Sì, secondo le specifiche, c'è un modo.
Anche se concordo sul fatto che Graeme Blackwood dovrebbe essere la risposta accettata, poiché praticamente risolve il problema, va notato che un elemento fisso può essere posizionato relativamente al suo contenitore.
Ho notato per caso che durante l'applicazione
-webkit-transform: translateZ(0);
al corpo, ha fatto un bambino fisso rispetto ad esso (invece della finestra). Quindi i miei elementi fissi left
e top
proprietà erano ora relativi al contenitore.
Quindi ho fatto alcune ricerche e ho scoperto che il problema era già stato trattato da Eric Meyer e anche se sembrava un "trucco", risulta che questo fa parte delle specifiche:
Per gli elementi il cui layout è regolato dal modello di riquadro CSS, qualsiasi valore diverso da nessuno per la trasformazione risulta nella creazione di un contesto di impilamento e di un blocco contenitore. L'oggetto funge da blocco contenitore per i discendenti posizionati fissi.
http://www.w3.org/TR/css3-transforms/
Pertanto, se si applica una trasformazione a un elemento padre, diventerà il blocco contenitore.
Ma...
Il problema è che l'implementazione sembra buggy / creativa, perché anche gli elementi smettono di comportarsi come fissi (anche se questo bit non sembra far parte delle specifiche).
Lo stesso comportamento si troverà in Safari, Chrome e Firefox, ma non in IE11 (dove l'elemento fisso rimarrà comunque fisso).
Un'altra cosa interessante (non documentata) è che quando un elemento fisso è contenuto all'interno di un elemento trasformato, mentre le sue proprietà top
e left
saranno ora correlate al contenitore, rispettando la box-sizing
proprietà, il suo contesto di scorrimento si estenderà sul bordo dell'elemento, come se la casella -sizing era impostato su border-box
. Per alcuni creativi là fuori, questo potrebbe diventare un giocattolo :)
TEST