JS实现滚动监听以及滑动到顶部【转】

news/2024/7/10 23:00:53 标签: jquery, html, css, 图片, javascript

以前做滚动监听都是用jQuery来实现这样的效果,虽然用html" title=jquery>jquery实现起来很方便,但是还是想用原生js来实现一下。

HTML代码:

<div class="uptop" id="uptop">
        <img src="images/up.png" id="to-top">//这里用了一个向上的箭头图片,用于表明返回顶部
</div>

CSS代码:

css">.uptop{
        position:fixed;//位置固定
        bottom:-50px;//距离底部-50px,为了使一开始不显示
        right:10px;//距离右边10px
        width:50px;
        z-index:99;//为了使此部分位于整个页面的最上部分,不会被覆盖
        -webkit-transition:all .5s;//设置改变bottom时的动画效果
        -moz-transition:all .5s;
        -ms-transition:all .5s;
        -o-transition:all .5s;
        transition:all .5s;
    }
    .uptop img{
        width:70%;
        cursor:pointer;
    }

JS代码:

javascript">window.onscroll = function(){ 
     var t = document.documentElement.scrollTop || document.body.scrollTop;  //获取距离页面顶部的距离
     var uptop = document.getElementById( "uptop" ); //获取div元素
     if( t >= 300 ) { //当距离顶部超过300px时
        uptop.style.bottom=30+'px';//使div距离底部30px,也就是向上出现
     } else { //如果距离顶部小于300px
        uptop.style.bottom=-50+'px';//使div向下隐藏
     } 
} 
var top=document.getElementById("to-top");//获取图片元素
var timer=null;
top.onclick = function(){ //点击图片时触发点击事件
        timer=setInterval(function(){ //设置一个计时器
        var ct = document.documentElement.scrollTop || document.body.scrollTop; //获取距离顶部的距离
        ct-=10;
        if(ct>0){//如果与顶部的距离大于零
             window.scrollTo(0,ct);//向上移动10px
        }
        else{//如果距离小于等于零
             window.scrollTo(0,0);//移动到顶部
             clearInterval(timer);//清除计时器
        }
    },10);//隔10ms执行一次前面的function,展现一种平滑滑动效果
}

通过这样一段js代码就能够实现当页面从顶部向下滑动超过300px时,返回顶部的图片出现,并且点击图片,页面平滑的移动到页面顶部。


http://www.niftyadmin.cn/n/1203026.html

相关文章

IBM发布全球首台商用量子计算机

AI前线导读&#xff1a; CES 2019大会上&#xff0c;IBM展示了全球首款专为科学家和企业设计的量子计算集成系统&#xff0c;称为IBM Q System One&#xff0c;此外&#xff0c;IBM还计划于2019年在纽约Poughkeepsie 开设首个 IBM Q 量子计算中心。 更多优质内容请关注微信公众…

$.cookie( ) 用法详细解析

Cookie是由服务器端生成&#xff0c;发送给User-Agent&#xff08;一般是浏览器&#xff09;&#xff0c;浏览器会将Cookie的key/value保存到某个目录下的文本文件内&#xff0c;下次请求同一网站时就发送该Cookie给服务器&#xff08;前提是浏览器设置为启用cookie&#xff09…

IC-CAD Methodology企业实战之inhouse-tool开发示例

2019独角兽企业重金招聘Python工程师标准>>> Inhouse-tool开发是IC-CAD工作的一个重要内容之一。在大型IC公司&#xff0c;由于设计工艺的先进性和设计逻辑的复杂性&#xff0c;IC设计流程中具有更多special的需求是通用EDA工具所不能覆盖的&#xff0c;这种情况下I…

如果40岁了还在写代码,是一种幸福,还是一种悲哀?

今天突然想到一个问题&#xff1a;如果40岁了还在写代码&#xff0c;是怎样的状态&#xff1f; 然后搜了一下&#xff0c;果然已经有人想到了&#xff0c;我们先来看看知乎的神人回答。 曾经有网友在知乎提问&#xff1a;“如果 40 岁了还在写代码&#xff0c;是一种幸福&…

Ubuntu14.04重启网卡的三种方法:

$ ifconfig -a 展示全部网卡 $ ifconfig enp2s0 up 启用网卡enp2s0 $ sudo vi /etc/network/interfaces auto enp2s0iface enp2s0 inet staticaddress 192.168.2.10network 255.255.255.0gateway 192.168.2.1 Ubuntu14.04重启网卡的三种方法&#xff1a; 一、network利用root帐…

全选和反选,怎么写,两种方法~

HTML&#xff1a; <div class"pre_infoWrap"><div class"pre_dateWrap bg"><div class"pre_date">2017年9月</div><div class"pre_oneInfoWrap"><div class"pre_oneInfo"><div clas…

关于前端js跨域的一些心得

关于前端js跨域的一些心得 原因 浏览器使用 XMLHttpRequest 发送请求的时候若是请求域名地址与当前域名不相同的时候&#xff0c;浏览器处于安全考虑会阻止请求的发送。这就是所谓的跨域问题。 解决方案 1. jsonp实现。 jsonp原理是浏览器请求资源文件的时候并不会去限制&#…

判断页面是否加载完成~

document.onreadystatechangefunction(){if(document.readyState"complete"){$(".loading").fadeOut();} } 进度条 www.loading.io 编辑CSS代码autoprefixer.github.io