在我们开发工作中,JavaScript可谓是必不可少的一部分,我们会时常遇到使用JavaScript实现回到顶部的代码,相信每个页面都会有的功能,今天就给大家详细介绍下JavaScript实现回到顶部效果的示例!
使用原生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> <p class="image"> <img src="tb_bg.jpg" alt=""> </p> </body> </html>
总结:
1.dom流的渲染顺序,hover写在a之前才会生效,否则会被覆盖。
2.各种属性方法的运用和简单的封装。
3.getElementsByClassName 返回的是nodelist 所以要使用数组的形式。
4.不同浏览器下的兼容问题,放弃tab键的依赖性,使用两个空格代替。
5.emmet插件的安装和使用。
6.jq提供的动画能更加简便的实现回到顶部效果。锚点法在某些特定场合也可以使用,问题是会在浏览器输入栏显示某些细节。
相关推荐:
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
javascript - iframe外怎么使iframe的内容回到顶部
以上就是JavaScript实现回到顶部效果的示例的详细内容,更多请关注php中文网其它相关文章!
已抢17201个
抢已抢50138个
抢已抢121208个
抢已抢184489个
抢已抢66338个
抢已抢350793个
抢