您的位置:首页 > Web前端 > JavaScript

原生Js回到顶部效果

2016-08-05 13:59 316 查看
前言:

使用原生js实现简单的回到顶部效果。需求比较明确:1.显示与隐藏按钮。2.中途再次触发onscroll清除定时器(暂时未实现,希望各位赐教)

代码:

<!--
Time:2016.8.4
author:Joel

Dom操作
1.document.getElementById 根据ID获取标签元素
2.document.documentElement.scrollTop .ie滚动条数值
3.document.body.scrollTop .chrome
4.document.documentElement.clientHeight 可视区域高度

事件运用
1.window.onload 加载完毕触发事件
2.onclick 点击触发事件
3.window.scroll 滚动条触发事件

定时器
1.setInterval()
2.clearInterval()
-->

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.btn:hover{
background: blue;
}
.btn{
display: none;
height: 40px;
width: 40px;
background: red;
position: fixed;
left: 1410px;
top: 600px;
}
.image{
width: 1190px;
margin:0 auto;
}
</style>
<script type="text/javascript">
window.onload = function(){
var myBtn = document.getElementsByClassName("btn");
var clientHeight = document.documentElement.clientHeight;
var timer = null;

window.onscroll = function(){
var osTop = document.documentElement.scrollTop || document.body.scrollTop;

if(osTop > clientHeight){
myBtn[0].style.display = "block";
}
else{
myBtn[0].style.display = "none";
}
}
myBtn[0].onclick = function(){
clearInterval(timer);
timer = setInterval(function(){
var osTop = document.documentElement.scrollTop || document.body.scrollTop;
var spd = Math.floor((-osTop) / 1000);

document.documentElement.scrollTop = osTop + spd;
document.body.scrollTop = osTop + spd;

if(osTop == 0){
clearInterval(timer);
}
},30);
}
}
</script>
</head>
<body>
<a href="javascript:;" class="btn">按钮</a>
<div class="image">
<img src="tb_bg.jpg" alt="">
</div>
</body>
</html>

小结:
1.dom流的渲染顺序,hover写在a之前才会生效,否则会被覆盖。
           2.各种属性方法的运用和简单的封装。

           3.getElementsByClassName 返回的是nodelist 所以要使用数组的形式。

           4.不同浏览器下的兼容问题,放弃tab键的依赖性,使用两个空格代替。

           5.emmet插件的安装和使用。

           6.jq提供的动画能更加简便的实现回到顶部效果。锚点法在某些特定场合也可以使用,问题是会在浏览器输入栏显示某些细节。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web前端开发