zoukankan      html  css  js  c++  java
  • 原生js实现单屏滚动

    类似于fullpage的单屏滚动,使用原生JS实现,不依赖任何js库;

    css:

    html,body {height:100%;}
    body {margin:0px;}
    div {height:100%;}
    

    html:

    <div style="background:#FEE;"></div>
    <div style="background:#EFE;"></div>
    <div style="background:#EEF;"></div>
    <div style="background:red;"></div>
    

    js:

    document.addEventListener("DOMContentLoaded", function() {
    	var body = document.body,
    		html = document.documentElement;
    	var itv, height = document.body.offsetHeight;
    	var page = scrollTop() / height | 0;
    	//窗口大小改变事件
    	addEventListener("resize", onresize, false);
    	onresize();
    	//滚轮事件
    	document.body.addEventListener(
    		"onwheel" in document ? "wheel" : "mousewheel",
    		function(e) {
    			clearTimeout(itv);
    			itv = setTimeout(function() {
    				var delta = e.wheelDelta / 120 || -e.deltaY / 3;
    				page -= delta;
    				var max = (document.body.scrollHeight / height | 0) - 1;
    				if (page < 0) return page = 0;
    				if (page > max) return page = max;
    				move();
    			}, 100);
    			e.preventDefault();
    		}
    	);
    	//平滑滚动
    	function move() {
    		var value = height * page;
    		var diff = scrollTop() - value;
    		(function callee() {
    			diff = diff / 1.2 | 0;
    			scrollTop(value + diff);
    			if (diff) itv = setTimeout(callee, 16);
    		})();
    	};
    	//resize事件
    	function onresize() {
    		height = body.offsetHeight;
    		move();
    	};
    	//获取或设置scrollTop
    	function scrollTop(v) {
    		if (v == null) return Math.max(body.scrollTop, html.scrollTop);
    		else body.scrollTop = html.scrollTop = v;
    	};
    });
    

    查看DEMO:http://codepen.io/jonechen/pen/kkpxka

    类似的原生JS效果插件参考 :http://itakeo.com/blog/2016/01/02/fullpage/

  • 相关阅读:
    第二章 Java程序设计环境
    第一章 Java程序设计概述
    (五)Java工程化--Jenkins
    (二)Java工程化--Maven实践
    (四)Java工程化--Git基础
    (三)Java工程化--Git起步
    (一)Java工程化--Maven基础
    codeblocks 中文编码问题
    win10安装virtualbox发生严重错误
    利用ssh传输文件
  • 原文地址:https://www.cnblogs.com/jone-chen/p/5955424.html
Copyright © 2011-2022 走看看