day23 其他事件(页面加载事件、页面滚动事件)

目录

    • 页面加载事件
    • 页面/元素滚动事件
      • 页面滚动事件——获取位置

页面加载事件

  • 加载外部资源(如图片、外联CSS和JavaScript等)加载完毕时触发的事件
  • 为什么使用:
    • 有时候需要等页面资源全部处理完毕再做一些事
    • 老代码喜欢把script写在head中,这时候直接找dom元素找不到
  • 事件名:load
  • 监听页面所有资源加载完毕
    • window添加load事件

注意:不光可以监听整个页面资源加载完毕,也可以针对某个资源绑定load事件。

示例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>//方式1.等待页面所有资源加载完毕,就回去执行回调函数window.addEventListener('load', function () {const btn = document.querySelector('button')btn.addEventListener('click', function () {alert('hhh')})})img.addEventListener('load',function(){//方式2.等待图片加载完毕,再执行里面的代码})</script>
</head><body><button>click</button>
</body></html>
  • 当初始的HTML文档被完全加载和解析完成后,DOMContentLoaded事件被触发,而无需等待样式表、图像等完全加载
  • 事件名:DOMContentLoaded
  • 监听页面DOM加载完毕
    • document添加DOMContentLoaded事件

示例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>document.addEventListener('DOMContentLoaded', function () {const btn = document.querySelector('button')btn.addEventListener('click', function () {alert('hhh2')})})</script>
</head><body><button>click</button>
</body></html>

页面/元素滚动事件

  • 滚动条在滚动的时候持续触发的事件
  • 为什么使用
    • 很多网页需要检测用户把页面滚动到某个区域后做一些处理,比如回到顶部
  • 事件名:scroll
  • 监听整个页面滚动
    • 给window或document添加scroll事件
  • 监听某个元素的内部滚动直接给某个元素添加即可
  • 使用场景
    • 想要页面滚动一段距离后就显示隐藏,可以使用scroll来检测滚动的距离

示例:页面滚动事件
在这里插入图片描述

<style>body {height: 3000px;}</style>
</head><body><script>window.addEventListener('scroll', function () {console.log('hhh')})</script></body>

页面滚动事件——获取位置

  • scrollLeft和scrollTop(属性)
    • 获取被卷去的大小
    • 获取元素内容往左、往上滚出去看不到的距离
    • 这两个值是可读写

示例1:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {padding-top: 100px;height: 3000px;}div {margin: 100px;overflow: auto;width: 200px;height: 200px;border: 1px solid red;}</style>
</head><body><div>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</div><script>// window.addEventListener('scroll', function () {//     // console.log('hhh')// })const div = document.querySelector('div')div.addEventListener('scroll', function () {// console.log('hhh')console.log(div.scrollTop)})</script></body></html>

示例2——获取页面滚动的位置:

注意原理:
在这里插入图片描述

效果:
在这里插入图片描述
滚动小于100像素时不显示


滚动大于等于100像素时显示

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {padding-top: 100px;height: 3000px;}div {display: none;margin: 100px;overflow: auto;width: 200px;height: 200px;border: 1px solid red;}</style>
</head><body><div>文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字文字</div><script>const div = document.querySelector('div')window.addEventListener('scroll', function () {// console.log('hhh')// 页面滚动多少像素?// 获取html元素写法//下面这行代码必须写在里面,获取数字型数据,没有单位console.log(document.documentElement.scrollTop)const n = document.documentElement.scrollTopif (n >= 100) {div.style.display = 'block'} else {div.style.display = 'none'}})// const div = document.querySelector('div')// div.addEventListener('scroll', function () {//     // console.log('hhh')//     console.log(div.scrollTop)// })</script></body></html>

补充:

  • 可以赋值,设置页面初始位置,例如:
    document.documentElement.scrollTop = 800

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Midjourney图片生成描述词记录(今天一天)

抄别人的描述词 /imagine prompt:https://&#xff08;你的图片地址&#xff09;.jpg Super handsome boy IP by pop mart , green suit, no hair, bald head, Scenes in spring , pastel color , mockup , fine luster , clean background ,3D render , Soft focus , oc , bl…

NodeJS Express在线人数统计

NodeJS开发中&#xff0c;要在Express中实现一个在线人数统计系统&#xff0c;可以用下面的思路&#xff1a; 数据结构: 使用一个对象来存储每个 IP 地址的最后访问时间。 当有请求到来时: 1、检查该 IP 地址是否已存在于对象中。 2、如果存在&#xff0c;更新其访问时间。…

20.2K Star,一个简洁美观、易用的云盘系统

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 现在的网盘动不动就限速&#xff0c;涨价&#xff0c;非常不爽&#x…

如何“做好冲突管理”?

一、工作实际案例 产品经理在主导跨部门需求项目时&#xff0c;项目在验收阶段&#xff0c;产品经理与业务人员完成初步验收&#xff0c;接下来需要开发同学解决验收问题。 开发小组长反馈&#xff1a;经开发内部评估&#xff0c;按当前项目排期&#xff0c;因上线时间紧张&a…

linux如下显示目录和子目录的树形结构

目 录 一、需求 二、解决方法 三、tree工具的安装 1. centos中安装tree 2&#xff0c;在Ubuntu系统中安装tree 3&#xff0c;使用源码编译安装 四、tree的语法 1、语法 2、常用选项 一、需求 应用程序的目录中包含一些子目录&#xff0c;目录嵌套很多&am…

10个必学的Python编程小技巧

10个必学的Python编程小技巧 一、列表推导式&#xff08;List Comprehension&#xff09;二、生成器表达式&#xff08;Generator Expression&#xff09;三、使用enumerate()遍历列表四、使用zip()同时遍历两个列表五、使用setattr()和getattr()动态操作对象属性六、使用with语…

数据监控-Prometheus/Grafana

一、数据监控Prometheus 1、什么是Prometheus Prometheus是由SoundCloud开源监控告警解决方案,从2012年开始编写代码,到2015年github上开源以来,吸引不少用户以及公司的使用。Prometheus作为新一代的开源解决方案,很多理念与Google SRE的运维之道不谋而合。 2、Promet…

【大厂AI课学习笔记】1.1.1人工智能导论

这个系列&#xff0c;之前是百度的学习笔记&#xff0c;后来他们网站打不开了&#xff0c;现在换为另一个大厂的。 第一节 人工智能导论 1.1 人工智能导论 1.1.1 人工智能概念的诞生 AI&#xff0c;Artificial Intelligence 1956年&#xff0c;美国达特茅斯会议提出。 定义…

2024/1/28 备战蓝桥杯 1-3

目录 特殊日期 0特殊日期 - 蓝桥云课 (lanqiao.cn) 最大距离 0最大距离 - 蓝桥云课 (lanqiao.cn) 最长递增 0最长递增 - 蓝桥云课 (lanqiao.cn) 缩位求和 0缩位求和 - 蓝桥云课 (lanqiao.cn) ISBN号码 0ISBN号码 - 蓝桥云课 (lanqiao.cn) 串的处理 0串的处理 - 蓝桥…

讯飞大模型定制训练平台尝鲜

文章目录 前言进入平台功能探索余额数据集管理 先训为快讯飞星火3.0Chinese-Aplaca-2-7BLlama2-7BInternLM-7BBloomz-7Bfalcon-7BBloomz-3B 前言 众所周知&#xff0c;国产大模型如千问、书生、易等等都有开源大模型&#xff0c;但是出场时效果就很不错的讯飞星火大模型却迟迟…

OpenHarmony关系型数据库

1 概述 关系型数据库(Relational Database, 以下简称RDB)是一种基于关系模型来管理数据的数据库&#xff0c;是在SQLite基础上提供一套完整的对本地数据库进行管理的机制&#xff0c;为开发者提供无需编写原生SQL语句即可实现数据增、删、改、查等接口&#xff0c;同时开发者也…

通讯录小项目(上)

Start And Stick 通讯录的实现有很多种方式&#xff0c;今天我们将用结构体实现简单的通讯录项目功能。包括通讯录的增、删、查、改等功能。 思路&#xff1a; 此次代码文件分别为&#xff1a; 文件名用途sqlist.h用于函数和结构体的声明sqlist.c用于函数的实现test.c用于通讯…

DevOps系列文章之 Git命令:过滤日志

使用git log命令查找特定提交历史的高级技巧。其中的一些技巧配合格式化日志命令使用有奇效。 按照数量过滤 使用git log命令时最基本的过滤方式就是按照可以显示的日志条数进行过滤。如果你只对最近几次提交感兴趣&#xff0c;这会节省在页面上查看所有提交的麻烦。 git lo…

Vue3在css中使用v-bind绑定js/ts变量,也可以在scss和less中使用方式

主要介绍Vue3中的新增的v-bind()的常用使用方式&#xff0c;主要包括在css,less,scss中的使用&#xff0c;可以参考官方文档查看&#xff1a;Vue3官方文档 特别提醒 如果你想在scss中或者less中使用&#xff0c;可能会报各种乱七八糟的错误&#xff0c;最快最好用的方式就是单…

RBD —— 不同材质破碎

目录 Working with concrete Chipping Details Proxy geometry Constraints Working with glass Chipping Proxy geometry Constraints Resolving issues with glass fracturing Working with wood Clustering Using custom cutters Working with concrete Concr…

【PostgreSQL OpenGauss 】数据库查询表锁,释放表锁

PostgreSQL & OpenGauss 数据库查询表锁&#xff0c;释放表锁 PostgreSQLOpenGauss 在数据库中&#xff0c;表锁是用于控制对表的并发访问的一种机制。不同的数据库系统&#xff08;如 PostgreSQL 和 OpenGauss&#xff09;可能具有不同的表锁管理机制。下面分别介绍如何在…

【RT-DETR有效改进】EfficientFormerV2移动设备优化的视觉网络(附对比试验效果图)

前言 大家好&#xff0c;我是Snu77&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持Re…

THM学习笔记——john

John the Ripper是目前最好的哈希破解工具之一。 John基本语法&#xff1a; john [options] [path to file] john&#xff1a;调用John the Ripper程序。 [path to file]&#xff1a;包含你要尝试破解的哈希的文件&#xff0c;如果它们在同一个目录中&#xff0c;你就不需要命名…

理解虚拟内存

虚拟内存管理 分页管理 将用户程序的地址空间分为若干个固定大小的区域&#xff0c;称为“页面”。典型的页面大小为 1KB。相应地&#xff0c;也将内存空间分为若干个物理块&#xff0c;页和块的大小相同。然后通过映射表&#xff0c;把连续的虚拟内存空间&#xff0c;映射到离…

C++: 内联函数

目录 概念&#xff1a; 与宏的对比&#xff1a; 函数膨胀&#xff1a; 内联函数的特性&#xff1a; 概念&#xff1a; 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数…