<div class="top">我是吸顶div</div>
    <p class="back">返回顶部</p>
    <script>
        // 滚动条的监听事件
        // 当滚动条位置发生改变时,触发定义的函数程序
        // 可用使用 display 设定 属性值 为 none 或者 block 来控制标签的显示或者隐藏
        // 但是过程是瞬间范围成的,不能制作成类似于动画的效果
        // 要实现动画的效果,必须要通过改变高度和添加过渡属性完成
        // 返回顶部效果
        // 原理:给 滚动条高度 设定 这个递减的高度
        //      根据一定的时间间隔,执行程序,当高度为0时,终止程序执行
        //      通过定时器来执行程序
        // 获取div标签对象
        var oDiv = document.querySelector('div');
        var oP = document.querySelector('p');
        window.onscroll = function(){
            // 1,获取当前滚动条的高度,通过兼容语法
            // 一旦滚动条位置发生改变,就会获取当前滚动条的位置
            var h = document.documentElement.scrollTop || document.body.scrollTop;
            // console.log(h)
            // 2,当滚动条执行至一定的高度,让div显示
            if(h > 500){
                // oDiv.style.display = 'block';
                // 改变高度
                oDiv.style.height = '100px';
                oP.style.height = '100px';
            }else{
                // 滚动高度小于0
                // 当高度再次变为0,隐藏起来
                oDiv.style.height = '0px';
                oP.style.height = '0px';
            }
        }
        // 返回顶部
        oP.onclick = function(){
            // 点击 标签时
            //  通过定时器,逐步减少滚动条高度,
            var time = setInterval(function(){
                
                // 1 获取当前 滚动条高度 , 必须是兼容语法获取的正确的滚动条高度
                var h = document.documentElement.scrollTop || document.body.scrollTop;
                // 让浏览器滚动条,每次间隔时间,都递减一个高度
                // 可以设定两种方法,有一种不起作用,另一种可以起作用
                document.documentElement.scrollTop -= 20 ;
                document.body.scrollTop -= 20 ;
                // 当滚动条高度为0是,终止定制器
                // 判断数值,必须是兼容方式获取的正确数值
                if( h === 0 ){
                    clearInterval(time);
                }
            } , 100);
            
        }
 
  // BOM操作之事件操作
        // 之前给标签绑定过点击事件
        // 标签对象.onclick = function(){}
        // 1, 事件对象 : 绑定事件的标签对象
        // 2, 事件类型 : 触发事件的类型,click是事件类型,onclick称为绑定事件
        // 3, function(){} : 事件处理函数,当触发事件时,执行的函数程序
        // JavaScript常见的事件类型
        // 鼠标事件 : 鼠标的各种点击,移动
        // 键盘事件 : 键盘的各种按键
        // 表单事件 : form标签相关的事件
        // 特殊事件 : 动画终止事件,过渡终止事件,滚动条监听事件...

滚动条小实验 BOM时间操作的更多相关文章

  1. 小笔记:Timer定时间隔时间操作

    小笔记:Timer定时间隔时间操作,后面有时间再补充和完善: public class TimingSvc { /// <summary> /// 定时器,执行定时任务 /// </ ...

  2. Hadoop之词频统计小实验

    声明:    1)本文由我原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Ubuntu操作系统,hadoop1-2-1,jdk1.8.0. 3)统计词频工作在单节点的伪分布上,至于真正实 ...

  3. 理解JS闭包的几个小实验

    学了JavaScript有一段时间了,但是对闭包还是不太理解,于是怀着心中的疑问做了几个小实验,终于有点明白了. 首先看一下MDN上的定义:闭包是函数和声明该函数的词法环境的组合. 简单来说,闭包是一 ...

  4. '林子雨大数据' 实验3 HBase操作与接口编程

    "林子雨大数据" 实验3 HBase操作与接口编程 环境搭建 VM虚拟机和Ubuntu系统的安装 在Windows中使用VirtualBox安装Ubuntu虚拟机(2020年7月版 ...

  5. MongoDB 主从复制小实验

    MongoDB 主从复制小实验 操作环境描述:WIN8  64位操作系统,内装虚拟机为CentOS 5.5 32位系统. 操作描述:跟其他关系型数据库类似,在主库进行数据操作,将数据同步到从节点,从节 ...

  6. entity framework 时间操作

    ).FirstOrDefault(); if (useractiveentity == null) { UserActive userActive = new UserActive(); userAc ...

  7. 1.4 Crack小实验

    0_day 第一章 基础知识 1.4 Crack小实验 <0day_2th>王清 著 电子书 下载链接:https://pan.baidu.com/s/11TgibQSC3-kYwCInm ...

  8. Python常用时间操作总结【取得当前时间、时间函数、应用等】转载

    Python常用时间操作总结[取得当前时间.时间函数.应用等] 转载  2017-05-11   作者:清风乐逍遥    我要评论 这篇文章主要介绍了Python常用时间操作,包括取得当前时间.时间函 ...

  9. arduino新入手体验:三个小实验

    新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...

  10. JavaScript笔记——BOM的操作和浏览器的检测

    BOM的操作 BOM 也叫浏览器对象模型,它提供了很多对象,用于访问浏览器的功能.BOM 缺少规范,每个浏览器提供商又按照自己想法去扩展它,就可能存在浏览器不兼容的情况,那么浏览器共有对象就成了事实的 ...

随机推荐

  1. Javascript中的继承?如何实现继承?

    一.是什么 继承(inheritance)是面向对象软件技术当中的一个概念 如果一个类别B"继承自"另一个类别A,就把这个B称为"A的子类",而把A称为&quo ...

  2. 《Effective C#》系列之(四)——最小化内存泄露和资源占用

    一.内存泄露 在<Effective C#>这本书中,最小化资源泄漏是其中一章的内容.以下是该章节的一些核心建议,以及使用C#代码示例说明: 及时释放非托管资源:在使用非托管资源时,需要手 ...

  3. 【笔记】Oracle Offset 以及力扣

    [笔记]Oracle Offset offset 代表跳过前 n 行,如果表少于 n+1 条记录,结果集将是空的:比如 n = 100,表示从 101 开始往后查. fetch next 代表往后查 ...

  4. [GPT] quasar 在 setup() 周期阶段想设置meta信息,如何获取当前的 route 参数动态设置

    在Vue 3 的Composition API(组合式API)中,特别是在 setup() 钩子函数阶段, 由于没有访问到常规的 Vue 实例(this上下文),所以不能直接使用 this.$rout ...

  5. [Contract] ETH 与 Gas 之间的价格转换关系, Ethereum Gas Price Chart

    以太坊网络每天的平均气价(Gas)是变化,有一张价格表:https://etherscan.io/chart/gasprice 然后你可以知道 1 Gas = xx Gwei,再换算一下 1 ETH ...

  6. 记 dotnet 8.0.4 修复的 WPF 的触摸模块安全问题

    本文记录 dotnet 8.0.4 版本修复的 WPF 的触摸模块安全问题,此问题影响所有的 .NET 版本,修复方法是更新 SDK 和运行时 宣布安全漏洞地址: https://github.com ...

  7. 以 standalone 模式启动 Aapche Pulsar

    以 standalone 模式启动 Aapche Pulsar standalone 模式常用于开发测试阶段,请勿在生产环境使用. 目录 以 standalone 模式启动 Aapche Pulsar ...

  8. .Net 8.0 下的新RPC,IceRPC之试试的新玩法"打洞"

    作者引言 很高兴啊,我们来到了IceRPC之试试的新玩法"打洞",让防火墙哭去吧 试试RPCs的新玩法"打洞" 比较典型的玩法:RPC数据流从客户端流向服务端, ...

  9. 【Python基础】两个参数的for循环步长写法

    一个参数for循环步长写法 >>> for i in range(1,10000,1000):print(i) ... 1 1001 2001 3001 4001 5001 6001 ...

  10. UE4 C++调用手柄震动

    近期封装输入相关逻辑,简单归纳下. 蓝图实现 内容界面右键Miscellaneous->Force Feedback Effect,创建力反馈对象并填写相关参数: 然后在蓝图中用Spawn Fo ...