原生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提供的动画能更加简便的实现回到顶部效果。锚点法在某些特定场合也可以使用,问题是会在浏览器输入栏显示某些细节。
使用原生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前端开发工程师需要学习的技能
- 6.html中的表单元素一
- 7.html中的表单元素一
- 开启CSS3.0的学习之旅(一)
- web前端开发
- 初始web前端开发
- web前端怎么做?
- 从网页制作到前端开发工程师难吗?
- Web前端工程师成长之路——知识汇总
- html基础知识梳理
- 史上最全的HTML、CSS知识点总结,浅显易懂
- WEB标准,Web前端开发工程师必备技术列表
- WEB标准,Web前端开发工程师必备技术列表
- img 和 background-image的选择
- Emmet:html/css代码快速编写神器
- 微信里面防止下拉"露底"组件,touch事件
- 微信公众平台Js API WeixinApi
- 阿里巴巴2015暑期实习面试经历(前端开发)
- 关于编写性能高效的javascript事件的技术[转] 来源:酷勤网 发布于 2015-2-12
- 浏览器是怎么加载页面的