Javascript返回顶部代码实现

 

返回顶部逻辑很简单,功能点分为:

  • 页面第一屏内不展示返回顶部的图标,超过第一屏时展示图标;
  • 点击返回顶部图标时页面流畅地返回顶部。

HTML文件部分:

<!DOCTYPE html>
<html>
	<head>
		<title>返回顶部</title>
		<link rel="stylesheet" type="text/css" href="css/style.css"/>
	</head>
	<body>
		<p>向下拖动滚动条(进入第二屏),右下角会出现“返回顶部”图标</p>
		<img src="images/totop.png" id="toTop"/>
		<script style="text/javascript" src="js/lee_top.js"></script>
	</body>
</html>

 

CSS文件部分:

body{
	height:4000px;
}
#toTop{
	position:fixed;
	right:30px;
	bottom:40px;
	cursor:pointer;
	display:none;
}

 

PS:因为CSS部分用到了"fixed",这个例子没有做IE6的兼容性处理(我相信大多数前端工程师都不喜欢IE6,),不过如果需要探讨此例的IE6兼容性,可以私信探讨^_^ 或者查看最新代码地址:https://github.com/tjuking/lee-goToTop

 

JS文件部分:

(function(){
	var scrollEle = clientEle = document.documentElement,
		toTopBtn = document.getElementById("toTop"),
		compatMode = document.compatMode,
		isChrome = window.navigator.userAgent.indexOf("Chrome") === -1 ? false : true;
	//不同渲染模式以及Chrome的预处理
	if(compatMode === "BackCompat" || isChrome){
		scrollEle = document.body;
	}
	if(compatMode === "BackCompat"){
		clientEle = document.body;
	}
	//返回顶部按钮的点击响应(注册函数),时间间隔和高度缩减率可以调节
	toTopBtn.onclick = function(){
		var moveInterval = setInterval(moveScroll, 10);
		function moveScroll(){
			setScrollTop(getScrollTop() / 1.2);
			if(getScrollTop() === 0){
				clearInterval(moveInterval);
			}
		}
	}
	//滚动时判断是否显示返回顶部按钮(注册函数)
	window.onscroll = function(){
		var display = toTopBtn.style.display;
		if(getScrollTop() > getClientHeight()){
			if(display === "none" || display === ""){
				toTopBtn.style.display = "block";
			}
		}else{
			if(display === "block" || display === ""){
				toTopBtn.style.display = "none";
			}
		}
	}
	//获取和设置scrollTop
	function getScrollTop(){
		return scrollEle.scrollTop;
	}
	function setScrollTop(value){
		scrollEle.scrollTop = value;
	}
	//获取当前网页的展示高度(第一屏高度),此处Chrome正常
	function getClientHeight(){
		return clientEle.clientHeight;
	}
})();

 

如果返回顶部用jQuery实现需要考虑的东西就很少了,不过原生的Javascript能帮助我们更好的学习这门语言以及了解各浏览器的不同。

 

当然除了以上代码还需要去网上找一个漂亮的图标。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值