<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. 云原生之在kubernetes集群下部署mysql应用

    一.Mysql介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.MySQL是一种开源的关系型数据库管理系统,可将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,从而 ...

  2. 我们为什么需要操作系统(Operating System)?

    我们为什么需要操作系统(Operating System)? a) 从计算机体系的角度,OS向下统筹了所有硬件资源(1),向上为所有软件提供API调用(2),使得软件程序员不必知晓硬件的具体细节,实现 ...

  3. 独家深度 | 一文看懂 ClickHouse vs Elasticsearch:谁更胜一筹?

    简介: 本文的主旨在于通过彻底剖析ClickHouse和Elasticsearch的内核架构,从原理上讲明白两者的优劣之处,同时会附上一份覆盖多场景的测试报告给读者作为参考. 作者:阿里云数据库OLA ...

  4. 基于 KubeVela 的 GitOps 交付

    ​简介: KubeVela 是一个简单.易用.且高可扩展的云原生应用管理和交付平台,KubeVela 背后的 OAM 模型天然解决了应用构建过程中对复杂资源的组合.编排等管理问题,同时也将后期的运维策 ...

  5. Linux内核社区迁移到github?

    简介: github是目前最火的开源软件代码托管平台,那么Linux内核社区能否迁移到github上呢?Intel的Daniel Vetter写了一篇关于这个问题的博客,他给出的答案是NO.至于这个答 ...

  6. CSS3 transition动画、transform变换、animation动画

    一.CSS3 transition动画 transition可以实现动态效果,实际上是一定时间之内,一组css属性变换到另一组属性的动画展示过程. 属性参数: 1.transition-propert ...

  7. 在线工具的 UI 变迁

    V1. Ref:https://www.cnblogs.com/farwish/p/16823474.html

  8. 非技术 对以后各大应用功能与 AI 助手的思考

    本文记录我对于 AI 助手在未来给各大应用或网站或设备带来的影响的思考 结论:未来的各大应用或网站或者是设备,都不会出现满屏的眼花缭乱的功能,取代的是各自有一个专属的 AI 助手,通过 AI 助手与人 ...

  9. WPF 自定义控件入门 Focusable 与焦点

    自定义控件时,如果自定义的控件需要用来接收键盘消息或者是输入法的输入内容,那就需要关注到控件的焦点 默认情况下的自定义控件是没有带可获取焦点的功能的,例如编写一个继承 FrameworkElement ...

  10. LLM应用实战:当KBQA集成LLM(二)

    1. 背景 又两周过去了,本qiang~依然奋斗在上周提到的项目KBQA集成LLM,感兴趣的可通过传送门查阅先前的文章<LLM应用实战:当KBQA集成LLM>. 本次又有什么更新呢?主要是 ...