2014-02-20 12 views
9

Ich habe drei Sektionsbereiche und innerhalb dieser habe ich ein Header-Element und ein untergeordnetes Element, das Position festgelegt ist.Position Fixed und Backface Visibility

Während der Benutzer scrollt möchte ich den nächsten Abschnitt über den vorherigen Abschnitt einschließlich seiner festen untergeordneten gehen.

Ich habe diese Arbeit in Chrome von Rückseiten Sichtbarkeit mit:

-webkit-backface-visibility: hidden;  
-moz-backface-visibility: hidden; 
-ms-backface-visibility: hidden;  
backface-visibility: hidden; 

Aber in FF, die festen Elemente sind nicht mehr festgelegt. Werfen Sie einen Blick auf die my jsfiddle http://jsfiddle.net/7KjXm/5/

Ist das erwartete Verhalten? Gibt es eine Cross-Browser-Lösung? Oder ist JS der Weg zu gehen?

Danke ....

+0

Müssen Sie tatsächlichen HTML-Inhalt mit einer festen Position haben? Oder würde ein Hintergrundbild genügen? – voithos

+4

[Es ist ein Fehler] (https://bugzilla.mozilla.org/show_bug.cgi?id=876341), ich denke, Sie müssen es umgehen –

+1

Was hat Backface-Sichtbarkeit zu tun, was Sie wollen hier erreichen? –

Antwort

6

gelang es mir, den Effekt zu lösen, die Sie gesucht haben. Leider scheint es nicht möglich, nur mit css (yet) zu tun.

Here ist meine Lösung, die jquery und modifizierte CSS der ursprünglichen Seite verwendet. Ich wechselte zu Zahlen statt zu farbigen Elementen und änderte die Größen.

Meine Javascript für gefälschte Schwimmelemente (ermöglicht ihnen verborgen werden, wenn der Blick weg bewegt):

$(function(){ 
    elem = $('.fixeditem'); 
    win = $(window); 
    wrap = $('<div>').css({ 
     width: elem.width(), 
     height: elem.height() 
    }); 
    elem.wrap(wrap); 
    win.scroll(function() { 
     elem.each(function(index, element){ 
      element = $(element); 
      var offset = element.parent().offset().top; 
      element.css('top', win.scrollTop() + 40 - offset); 
     }); 
    }); 
}); 

Meine benutzerdefinierte CSS für dieses spezielle Beispiel:

html, body{ 
    height: 100%; 
} 

.item { 
    min-height:100%; 
    background-color: white; 
    position: relative; 
    z-index: 1; 
    overflow: hidden; 
} 

.header { 
    position: relative; 
    background-color: green; 
    padding: 5px; 
    z-index: 2; 
} 

.fixeditem { 
    position: relative; 
    top: 10%; 
    left: 50%; 
    z-index: 0; 
} 

Farbige Aktualisierung von Code : http://jsfiddle.net/8F2Zc/4/

Hoffe, das hilft!

+0

Wenn Sie die Entfernung ändern möchten, die das Objekt von der Spitze entfernt ist, ändern Sie die "40" in der CSS-Funktion auf den von Ihnen gewünschten Wert. Um Prozentwerte hinzuzufügen, müssen Sie auch die Fenstergröße abrufen. –

+0

Danke Tyler! Das ist meiner endgültigen JS-Lösung ziemlich ähnlich. Berechnung der obersten Position jedes fixierten Elements beim Scrollen des Benutzers – mindwire22

+0

Sie sind herzlich willkommen. Das einzige Problem, das ich dabei gefunden habe, ist, dass es auf meinem Tablet hässlich wirkt (ich habe Chrome benutzt). Hoffe das funktioniert immer noch für dich. –

Verwandte Themen