css+js实现顶部悬浮栏
纯悬浮只需将需要悬浮的类style中加上position:fixed即可
动画效果依赖于css3中的transition过渡方法与transform 2D转换方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#header {
border-bottom: 1px solid #EEE;
background-color: #444;
position: fixed;
z-index: 2;
top: 0;
left: 0;
width: 100%;
/* Force Hardware Acceleration */
-webkit-transform: translateZ(0);
transform: translateZ(0);
will-change: transform;
-webkit-transition: -webkit-transform .5s;
transition: -webkit-transform .5s;
transition: transform .5s;
transition: transform .5s, -webkit-transform .5s;
}
#header.is-hidden {
-webkit-transform: translateY(-80%);
-ms-transform: translateY(-80%);
transform: translateY(-80%);
}
利用JS在页面滑动是赋予类别即可1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43$(document).ready(function($){
var mainHeader = $('header#header'),
headerHeight = mainHeader.height();
//set scrolling variables
var scrolling = false,
previousTop = 0,
currentTop = 0,
scrollDelta = 10,
scrollOffset = 150;
$(window).on('scroll', function(){
if( !scrolling ) {
scrolling = true;
(!window.requestAnimationFrame)
? setTimeout(autoHideHeader, 250)
: requestAnimationFrame(autoHideHeader);
}
});
$(window).on('resize', function(){
headerHeight = mainHeader.height();
});
function autoHideHeader() {
currentTop = $(window).scrollTop();
checkSimpleNavigation();
previousTop = currentTop;
scrolling = false;
}
function checkSimpleNavigation() {
//there's no secondary nav or secondary nav is below primary nav
if (previousTop - currentTop > scrollDelta) {
//if scrolling up...
mainHeader.removeClass('is-hidden');
} else if( currentTop - previousTop > scrollDelta && currentTop > scrollOffset) {
//if scrolling down...
mainHeader.addClass('is-hidden');
}
}
});