2013-09-27 6 views
22

Quando si utilizza un css3 transform(), position: fixed non si applica. Ho creato un jsFiddle completamente funzionante che mostra il problema: http://jsfiddle.net/SR5ka/css3 transform posizione di ripristino: fisso

Prima scorrere verso il basso, notare che la barra laterale sinistra rimane fissa. Ora, fai clic su expand e scorri verso il basso, nota che la barra laterale sinistra è ora non corretta.

Qualche idea se esiste una correzione nativa per questo?

risposta

4

È possibile utilizzare un lavoro intorno a like this one. Implica la commutazione di un valore sinistro (tramite una classe) sia per l'elemento fisso che per il contenitore.

.global-wrapper { 
    position: relative; 
    -webkit-transition: 300ms; 
    transition: 300ms; 
} 
.global-wrapper.expanded, 
.global-wrapper.expanded .navbar { 
    left: 200px; 
} 
.navbar { 
    -webkit-transition: 300ms; 
    transition: 300ms; 
    position: fixed; 
    width: 100px; 
    height: 100%; 
    top: 0px; 
    left: 0px; 
} 
.content { 
    position: relative; 
    width: calc(100% - 170px); /* 100% - width of left bar plus margin */ 
} 

Con una piccola quantità di JS vaniglia per alternare esso classe:

var wrapper = document.querySelector(".global-wrapper"); 
document.getElementById("expand").onclick = function() { 
     wrapper.classList.toggle("expanded"); 
} 
+0

Non ha bisogno del javascript. – Justin

+0

Quindi non volevi che l'elemento fisso si spostasse quando si fa clic sul pulsante? –

+3

Javascript non è necessario, ecco una pura soluzione 'css'. Grazie per l'ispirazione. http://jsfiddle.net/SR5ka/25/ – Justin

3

Secondo questa risposta: https://stackoverflow.com/a/15251226/125264 Questo problema può essere risolto aggiungendo fittizio -webkit-trasformazione per l'elemento che deve essere risolto Ha funzionato per me

Modifica 04,2016

Sembra che non funziona più.

+2

Non ha funzionato per me –

+0

Ciprian, non sei solo, alcuni ragazzi sulla risposta collegata hanno problemi anche loro. – Wiseman