Słuchaj zdarzenia przewijania, gdy przewijasz obok elementu, który chcesz pozostać w widoku, zmieniasz elementy, do których pozycja jest "ustalona".
stworzyłem jsFiddle ilustrujący to: http://jsfiddle.net/luisperezphd/EcsS6/
Istnieje kilka rzeczy, o których warto pamiętać na przykład stałym elementem będzie miejsce w stosunku do okna lub pierwszego rodzica z position: relative
.
Po drugie, gdy zmienisz element na fixed
, zwija on miejsce, w którym znajdował się wcześniej, powodując przesunięcie zawartości poniżej. Jeśli chcesz, aby efekt wyglądał gładko, musisz umieścić coś w swoim miejscu, które zajmuje tyle samo miejsca, co w rzeczywistości.
W moim przykładzie z jsFiddle osiągnąłem to, owijając element nagłówka wewnątrz innego elementu, a następnie ustawiając jego wysokość, aby dopasować (programowo). Istnieje jednak kilka różnych sposobów, w jakie można to osiągnąć.
Mam zamiar również uwzględnić poniższy kod, w moim przykładzie używam jQuery.
JavaScript:
var $header = $("#header");
var HeaderOffset = $header.position().top;
$("#headerContainer").css({ height: $header.height() });
$("#container").scroll(function() {
if($(this).scrollTop() > HeaderOffset) {
$header.addClass("fixedTop");
} else {
$header.removeClass("fixedTop");
}
});
CSS:
#containerParent {
position: relative;
width: 180px;
}
#container {
height:200px;
overflow:auto;
}
#header {
background:black;
color:white;
width: 100%;
}
.fixedTop {
position: absolute;
top: 0;
}
Przykładowy HTML:
<h1>Fixed Position Header - after a point</h1>
<div id="containerParent">
<div id="container">
This text is an example of content that might occur before the header.
<div id="headerContainer">
<div id="header">Header</div>
</div>
<div>
Below is enough content to trigger scrolling.
line 1 <br/>
line 2 <br/>
line 3 <br/>
line 4 <br/>
line 5 <br/>
line 6 <br/>
line 7 <br/>
line 8 <br/>
line 9 <br/>
line 10 <br/>
line 11 <br/>
line 12 <br/>
line 13 <br/>
line 14 <br/>
line 15 <br/>
</div>
</div>
</div>
* I * myślę to jest poprawny sposób to zrobić, w przeciwieństwie do javascript. – ninjagecko
Shold również przeczytać ten artykuł John Resig (autor jQuery) o wydarzeniu przewijania i wydajności http://ejohn.org/blog/learning-from-twitter/ – jcubic
Rzeczywiście, uważam, że większość przeglądarek, nawet nowoczesne przeglądarki, takie jak Chrome które są zoptymalizowane pod kątem szybkości, spowalniają indeksowanie, jeśli użyłeś pozycji: ustalone lub przewijające sztuczki. – ninjagecko