Warum nicht translateX erwartungsgemäß für Feste Elemente auf IE9, IE10 und IE11?
Ich versuche, um die folgenden im IE9, IE10 und IE11 (funktioniert auch einwandfrei unter Chrome und FF):
Im mobilen Modus, ich habe einen main #container
wrapper, der hält das ganze Website-Inhalte und eine nav-Seite Menü-div-Element, welches innerhalb der #container
(nicht ausgezogen ist, btw), ist aber nicht sichtbar und versteckt ist off-screen. Wenn ein Benutzer auf ein Menü öffnen Umschalten-Taste, schieben Sie die #container
auf der rechten Seite, enthüllt die nav-Seite Menü-div direkt positioniert, um seiner linken Seite. Die "Schiebe" ist passiert mit translateX, die zugewiesen bekommt, sobald das "offene" - Klasse angewendet wird, um es über den Knebel. In der IEs, ich bin immer der animation Teil, wie erwartet, aber ohne eine sichtbare Seite nav (leeren Raum).
#container {
height: 100%;
position: relative;
transition: transform ease .5s;
width: 100%;
}
#container.open {
position: fixed;
transform: translateX(300px);
}
#nav-side-menu {
left: -300px;
height: 100%;
overflow: scroll;
position: fixed;
top: 0;
width: 300px;
}
- Können Sie einen link zu einer demo? Ich nahm mir die Freiheit zu machen; reflektieren Ihr Szenario genau?
- Perfekt! Zeigt das Szenario genau wie beabsichtigt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem hier ist mit dem Einsatz der
position: fixed
innen ein neues element. Gemäß der Spezifikation ist, wenn mit Fix-positionierten Elementen ...das mit block und gründete die viewport. Es ist eine Debatte , ob Elemente umgewandelt werden sollte, die mit block von festen Nachkommen, aber Internet Explorer nicht derzeit unterstützt diese.In diesem speziellen Fall könnte man vermeiden, die cross-browser-Komplikationen durch die Vermeidung von CSS-Transformationen zusammen. Stattdessen versuchen Sie, das element mit seitlich über die
left
Eigenschaft. Unten ist mein markup, die ich glauben, zu einer angemessenen Reflexion von Ihnen:Wie oben beschrieben, wurde der folgende Ansatz macht Schlüssel verwenden, der einen relativ positionierten container, bewegt von Seite zu Seite durch den übergang (unterstützt seit IE10) die
left
Eigenschaft. Wir sind auch mit dercalc
- Funktion (unterstützt seit IE9), um zu bestimmen, besser-Abmessungen und offsets:Diesem Ansatz ergibt sich ein konsistenter Umgang mit Internet Explorer, Chrome und Firefox. Das Ergebnis kann online eingesehen werden hier: http://jsfiddle.net/jonathansampson/vxntq8b1/
left
- Eigenschaft wird ausgelöst, layout, Farbe und Komposition. Wenn Sie IE verwenden konnte-Transformation mit festen Elemente platzieren, dann mit dem transformieren-Sie haben nur die Zusammensetzung ändern, ohne neu streichen oder re-layout notwendig. Mehr info auf Leistung Kosten diese Attribute sind im csstriggers.comtransition: left
und ähnliche, arm zu sein. Siehe z.B. hier für einige Diskussionen darüber, warum, und sehen, die Antwort für ein Beispiel mit Mondernizr um eine fall-back für die Browser, die keine Unterstützung CSS3-Transformationen.