Ya, menurut spesifikasi, ada cara.
Sementara saya setuju bahwa Graeme Blackwood harus menjadi jawaban yang diterima, karena secara praktis menyelesaikan masalah, perlu dicatat bahwa elemen tetap dapat diposisikan relatif ke wadahnya.
Saya perhatikan secara tidak sengaja ketika melamar
-webkit-transform: translateZ(0);
ke tubuh, itu membuat anak tetap relatif terhadap itu (bukan viewport). Jadi elemen left
dan top
properti tetap saya sekarang relatif terhadap wadah.
Jadi saya melakukan riset, dan menemukan bahwa masalah itu sudah dibahas oleh Eric Meyer dan bahkan jika itu terasa seperti "trik", ternyata ini adalah bagian dari spesifikasinya:
Untuk elemen yang tata letaknya diatur oleh model kotak CSS, nilai apa pun selain tidak ada untuk hasil transformasi dalam penciptaan konteks penumpukan dan blok yang berisi. Objek bertindak sebagai blok yang berisi untuk keturunan yang diposisikan tetap.
http://www.w3.org/TR/css3-transforms/
Jadi, jika Anda menerapkan transformasi apa pun ke elemen induk, itu akan menjadi blok yang berisi.
Tapi...
Masalahnya adalah implementasinya nampak buggy / kreatif, karena elemen-elemennya juga berhenti berperilaku sebagai tetap (walaupun bit ini tampaknya tidak menjadi bagian dari spesifikasi).
Perilaku yang sama akan ditemukan di Safari, Chrome dan Firefox, tetapi tidak di IE11 (di mana elemen tetap akan tetap diperbaiki).
Hal lain yang menarik (tidak terdokumentasi) adalah ketika elemen tetap terdapat di dalam elemen yang ditransformasikan, sedangkan properti top
dan left
propertinya sekarang akan terkait dengan wadah, menghormati box-sizing
properti, konteks penggulirannya akan melampaui batas elemen, seolah-olah kotak -ukuran diatur ke border-box
. Untuk beberapa kreatif di luar sana, ini mungkin bisa menjadi mainan :)
UJI