<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. 2.css的导入方式

    三种导入方式: 1.行内样式:在标签元素中,编写一个style属性,编写样式即可.有多个以分号隔开 <h2 style="color: green">标题</h2 ...

  2. 小米电商 Apache Dubbo-go 微服务实践

    ​简介:2021 年是小米中国区电商部门变动调整较大的一年,小米中国区早期电商.服务体系建立在 Go 语言构建的微服务体系之上,由内部自研的 Go 语言微服务框架 koala 支撑起数以千计的微服务应 ...

  3. 有赞 Flink 实时任务资源优化探索与实践

    简介: 目前有赞实时计算平台对于 Flink 任务资源优化探索已经走出第一步. 随着 Flink K8s 化以及实时集群迁移完成,有赞越来越多的 Flink 实时任务运行在 K8s 集群上,Flink ...

  4. 打通JAVA与内核系列之一ReentrantLock锁的实现原理

    ​简介:写JAVA代码的同学都知道,JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁).其中synchronized锁是JAVA语言层面提供的能力 ...

  5. 360 政企安全集团基于 Flink 的 PB 级数据即席查询实践

    简介: Threat Hunting 平台的架构与设计,及以降低 IO 为目标的优化与探索.为什么以及如何使用块索引. 本文整理自 360 政企安全集团的大数据工程师苏军以及刘佳在 Flink For ...

  6. dotnet 5 从 IL 层面分析协变返回类型新特性

    在 C# 9.0 里面添加的一个新特性是支持协变返回类型,也就说子类重写了基类的抽象或虚拟方法,可以在返回值里面返回协变的类型,也就是返回值的类型可以是继承原本子类返回值类型的子类.本文将来从 IL ...

  7. 适合IT团队的在线文档私人分享工具——showdoc部署

    转载文章: https://www.lixian.fun/3617.html

  8. Pr 的导出视频

    导出视频 https://www.bilibili.com/video/BV1Vt411n7Bb?p=7

  9. 🔥🔥httpsok-谷歌免费SSL证书如何申请

    httpsok-谷歌免费SSL证书如何申请 使用场景: 部署CDN证书.OSS云存储证书 证书类型: 单域名 多域名 通配符域名 混合域名 证书厂商: ZeroSSL Let's Encrypt Go ...

  10. uniapp底层跨端原理

    uniapp底层跨端原理 - 代码编写:开发者使用Vue.js框架编写uniapp的代码,包括页面结构.样式和逻辑等. - 编译过程:在编译过程中,uniapp会将Vue.js的代码转换为各个平台所需 ...