1 <!DOCTYPE html>
2 <html>
3
4 <head>
5 <meta charset="UTF-8">
6 <title>tab</title>
7
8 <style type="text/css">
9 html,
10 body {
11 height: 100%;
12 }
13
14 body,
15 ul,
16 li,
17 a,
18 p,
19 div {
20 padding: 0px;
21 margin: 0px;
22 font-size: 14px;
23 }
24
25 #wrap {
26 overflow: hidden;
27 width: 100%;
28 }
29
30 #main {
31 height: 2944px;
32 top: 0;
33 position: relative;
34 }
35
36 .page {
37 width: 100%;
38 margin: 0;
39 }
40
41 #page1 {
42 background: #E4E6CE;
43 }
44
45 #page2 {
46 background: #6CE26C;
47 }
48
49 #page3 {
50 background: #BF4938;
51 }
52
53 #page4 {
54 background: #2932E1;
55 }
56 </style>
57 </head>
58
59 <body>
60 <div id="wrap">
61 <div id="main">
62 <div id="page1" class="page"></div>
63 <div id="page2" class="page"></div>
64 <div id="page3" class="page"></div>
65 <div id="page4" class="page"></div>
66 </div>
67 </div>
68 <script type="text/javascript">
69 var wrap = document.getElementById("wrap");
70 var main = document.getElementById("main");
71 var hei = document.body.clientHeight;
72 wrap.style.height = hei + "px";
73 var obj = document.getElementsByTagName("div");
74 for(var i = 0; i < obj.length; i++) {
75 if(obj[i].className == 'page') {
76 obj[i].style.height = hei + "px";
77 }
78 }
79 //如果不加时间控制,滚动会过度灵敏,一次翻好几屏
80 var startTime = 0, //翻屏起始时间
81 endTime = 0,
82 now = 0;
83 //浏览器兼容
84 if((navigator.userAgent.toLowerCase().indexOf("firefox") != -1)) {
85 document.addEventListener("DOMMouseScroll", scrollFun, false);
86 } else if(document.addEventListener) {
87 document.addEventListener("mousewheel", scrollFun, false);
88 } else if(document.attachEvent) {
89 document.attachEvent("onmousewheel", scrollFun);
90 } else {
91 document.onmousewheel = scrollFun;
92 }
93
94 //滚动事件处理函数
95 function scrollFun(event) {
96 startTime = new Date().getTime();
97 var delta = event.detail || (-event.wheelDelta);
98 //mousewheel事件中的 “event.wheelDelta” 属性值:返回的如果是正值说明滚轮是向上滚动
99 //DOMMouseScroll事件中的 “event.detail” 属性值:返回的如果是负值说明滚轮是向上滚动
100 if((endTime - startTime) < -1000) {
101 if(delta > 0 && parseInt(main.offsetTop) > -(hei * 3)) {
102 //向下滚动
103 now = now - hei;
104 toPage(now);
105 }
106 if(delta < 0 && parseInt(main.offsetTop) < 0) {
107 //向上滚动
108 now = now + hei;
109 toPage(now);
110 }
111 endTime = new Date().getTime();
112 } else {
113 event.preventDefault();
114 }
115 }
116
117 function toPage(now) {
118 //$("#main").animate({ top: (now + 'px') }, 1000); //jquery实现动画效果
119 setTimeout("main.style.top = now + 'px'",1000); //javascript 实现动画效果
120 }
121 </script>
122 </body>
123
124 </html>