JS进阶DAY3|页面加载事件和页面滚动事件

目录

一、页面加载事件

1.1 DOMContentLoaded  事件

1.1.1 触发时机

1.1.2 用途

1.1.3 代码示例document.addEventListener('DOMContentLoaded', (event) => {

1.2 load  事件

1.2.1 触发时机

1.2.2 用途

1.2.3 代码示例

二、页面滚动事件

1.1 scroll事件

1.1.1 触发时机

1.1.2 用途

1.2.3 代码示例

1.2.4 电梯导航案例


一、页面加载事件

在JavaScript中,页面加载事件主要用于在页面加载的不同阶段执行脚本。以下是两个主要的页面加载事件:

1.1 DOMContentLoaded  事件

1.1.1 触发时机

当初始的HTML文档被完全加载和解析完成后,不等待样式表、图片和子框架完成加载,就会触发 DOMContentLoaded 事件。

1.1.2 用途

这个事件适合执行那些不依赖于样式和图片的脚本,比如初始化DOM元素、绑定事件处理程序等。

1.1.3 代码示例document.addEventListener('DOMContentLoaded', (event) => {

    console.log('DOM fully loaded and parsed');

    // 这里可以执行不依赖于样式和图片的脚本

});

1.2 load  事件

1.2.1 触发时机

当整个页面包括所有依赖资源(如样式表、图片和子框架)完全加载后,会触发 load 事件。

1.2.2 用途

这个事件适合执行那些需要页面完全加载后才能进行的操作,比如最终的页面布局调整、动画效果的触发等。

1.2.3 代码示例

window.addEventListener('load', (event) => {

    console.log('Page fully loaded');

    // 这里可以执行依赖于样式和图片的脚本

});

DOMContentLoaded 关注的是HTML文档的加载和解析,而 load 关注的是整个页面及其所有资源的完全加载。根据你的脚本需求,选择合适的事件来确保最佳的执行时机。

二、页面滚动事件

1.1 scroll事件

1.1.1 触发时机

当用户滚动页面或者脚本以编程方式改变滚动位置时,会触发 scroll 事件。

1.1.2 用途

这个事件可以用来检测页面的滚动位置,实现基于滚动位置的动态效果,如懒加载图片、固定头部导航栏等。

1.2.3 代码示例

window.addEventListener('scroll', (event) => {

    const scrollPosition = window.pageYOffset || document.documentElement.scrollTop;

    console.log(`Page scrolled to ${scrollPosition}px`);

    // 根据滚动位置执行操作,如加载更多内容、改变样式等

});

1.2.4 电梯导航案例

// 为window对象添加一个滚动(scroll)事件监听器。
window.addEventListener('scroll', function () {
    // 获取页面滚动的距离,即文档元素顶部距离视口顶部的距离。
    const n = document.documentElement.scrollTop;

    // 使用三元运算符来设置电梯(假设是一个返回顶部按钮,命名为elevator)的透明度。
    // 如果滚动距离大于或等于300px,则设置透明度为1(完全可见)。
    // 否则,设置透明度为0(完全透明)。
    elevator.style.opacity = n >= 300 ? 1 : 0;
});

// 查询页面上id为'backTop'的元素,并将其存储在变量backTop中。
const backTop = document.querySelector('#backTop');

// 为backTop元素添加一个点击(click)事件监听器。
backTop.addEventListener('click', function() {
    // 当用户点击返回顶部按钮时,使用window.scrollTo()方法将页面滚动到(0, 0)的位置,即页面顶部。
    // 注释掉的document.documentElement.scrollTop = 0是另一种实现返回顶部的方法,但这里使用了window.scrollTo()。
    window.scrollTo(0, 0);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

overleaf 写论文 语法笔记

1.找参考的期刊/论文模板 注册账户后并登录后进入这个界面,创建的所有历史项目会在这个界面显示,后期可以继续修改。 创建新项目:点击绿色按钮“创建新项目”后,可以新建空白项目,可以选择模板直接往模板里添加内容,…

OpenCV-平滑图像

二维卷积(图像滤波) 与一维信号一样,图像也可以通过各种低通滤波器(LPF)、高通滤波器(HPF)等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…

Pandas | skill | 将groupby分组后的数据使用堆叠图像展示

groupby堆叠图 计算商品名称和销售数量计算商品名称和销售总额在每个颜色段上标注商品名称和平均销售金额 计算商品名称和销售数量 # 筛选出四个类别下的商品数据 categories_of_interest [Clothing, Accessories, Footwear, Outerwear] # data[Category]列中的元素是否在cat…

selenium常见接口函数使用

博客主页:花果山~程序猿-CSDN博客 文章分栏:测试_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 1. 查找 查找方式 css_s…

vue-router查漏补缺

一、动态路由匹配 1.带参数的动态路由匹配 import User from ./User.vue// 这些都会传递给 createRouter const routes [// 动态字段以冒号开始{ path: /users/:efg, component: User }, ]这种方式的路由会匹配到/users/abc或者/users/123,路径参数用冒号:表示,并…

深度和法线纹理

屏幕后期处理效果的基本原理就是当游戏画面渲染完毕后通过获取到该画面的信息进行额外的效果处理 之前的边缘检测、高斯模糊、Bloom、运动模糊等效果都是基于获取当前屏幕图像中的像素信息进行后期处理的 如果仅仅根据像素信息来进行一些效果处理,存在以下问题&…

Vue3小兔鲜电商项目

创建项目 npm install 装包 创建文件夹 git工具管理项目 基于create-vue创建出来的项目默认没有初始化git仓库,需要我们手动初始化 执行命令并完成首次提交: git init git add . git commit -m "init"

短视频矩阵系统SEO优化排名技术的源码搭建与实施:

在开发短视频SEO优化排名技术时,虽然初步观察可能让人认为仅通过get和set这两个代理(trap)就能实现,但实际操作中远不止如此。为了更全面地控制私有属性的访问权限,还需要实现has、ownKeys以及getOwnPropertyDescripto…

Ubuntu中安装配置交叉编译工具并进行测试

01-下载获取交叉编译工具的源码 按照博文 https://blog.csdn.net/wenhao_ir/article/details/144325141的方法,把imx6ull的BSP下载好后,其中就有交叉编译工具。 当然,为了将来使用方便,我已经把它压缩并传到了百度网盘&#xff…

Fiddler 5.21.0 使用指南:过滤浏览器HTTP(S)流量下(四)

概述 在上一篇文章中,我们介绍了一部分简单的过滤功能,已经可以帮助我们较为准确的定位到感兴趣的请求;提升我们的工作效率,我们可以通过设置更为复杂的过滤规则,精准到定位的我们想要的请求和响应信息。专注于分析对…

错题:Linux C语言

题目&#xff1a;手写代码&#xff1a;判断一个数&#xff08;int类型的整数&#xff09;中有有多少1 题目&#xff1a;手写代码&#xff1a;判断一个数(转换成二进制表示时)有几个1 #include <stdio.h> int main(int argc, const char *argv[]) { //判断一个数&#xf…

MFC扩展库BCGControlBar Pro v36.0新版亮点:黑色主题中的自动反转图标

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v36.0已全新发布了&#xff0c;这个版本在黑暗主题中添加自动图标反转、新增一个全新的S…

【PlantUML系列】流程图(四)

目录 目录 一、基础用法 1.1 开始和结束 1.2 操作步骤 1.3 条件判断 1.4 并行处理 1.5 循环 1.6 分区 1.7 泳道 一、基础用法 1.1 开始和结束 开始一般使用start关键字&#xff1b;结束一般使用stop/end关键字。基础用法包括&#xff1a; start ... stopstart ...…

【Redis】深入解析Redis缓存机制:全面掌握缓存更新、穿透、雪崩与击穿的终极指南

文章目录 一、Redis缓存机制概述1.1 Redis缓存的基本原理1.2 常见的Redis缓存应用场景 二、缓存更新机制2.1 缓存更新的策略2.2 示例代码&#xff1a;主动更新缓存 三、缓存穿透3.1 缓存穿透的原因3.2 缓解缓存穿透的方法3.3 示例代码&#xff1a;使用布隆过滤器 四、缓存雪崩4…

LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略

LLMs之Agent之Lares&#xff1a;Lares的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;这篇博文介绍了 Lares&#xff0c;一个由简单的 AI 代理驱动的智能家居助手模拟器&#xff0c;它展现出令人惊讶的解决问题能力。 >> 背景痛点&#xff1a;每天都有新的…

快速集成外部业务数据:观测云如何颠覆传统监控的边界

01 传统监控的局限&#xff1a;被困在技术的“象牙塔” 过去的监控工具更多地服务于 IT 技术人员&#xff0c;就像是只为运维人员准备的“秘密花园”。服务器负载、网络延迟、系统资源——这些技术指标构成了一个封闭的世界&#xff0c;与业务层隔绝&#xff0c;就像是运维人员…

如何在Ubuntu中利用repo和git地址下载获取imx6ull的BSP

01-设置git的用户名和邮箱 git config --global user.name "suwenhao" git config --global user.email "2487872782qq.com"这里不设置的话后面在第5步的repo配置中还是会要求输入&#xff0c;而且以后进行相关操作都要输入&#xff0c;不妨现在就进行配置…

Linux-Ubuntu相关指令以及操作

一&#xff0c;Linux基础指令 二&#xff0c;文件系统结构 常用的U盘就是挂载在这个mdeia文件夹下&#xff0c;比如实现优盘分几个区&#xff0c;就要将在dev下优盘的驱动解除挂载在media,然后对其进行分区&#xff0c;再挂载回去&#xff0c;最后将其类型重新改为fat32格式&am…

二进制部署Prometheus+grafana+alertmanager+node_exporter

Prometheus 是一个开源的监控和告警工具包&#xff0c;旨在提供高可靠性和可扩展性。它最初由 SoundCloud 开发&#xff0c;现已成为云原生计算基金会&#xff08;CNCF&#xff09;的一部分。以下是 Prometheus 的一些关键特性和概念&#xff1a; 1. **时间序列数据库**&#…

使用springboot-3.4.1搭建一个netty服务并且WebSocket消息通知(适用于设备直连操作,以及回复操作)

引入最新版本 <!--websocket--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>启动类加入 //netty 协议服务端口启动 NettyTcpHandler.start()…