当前位置: 首页 > article >正文

前端学习-页面加载事件和页面滚动事件(三十二)

目录

前言

页面加载事件和页面滚动事件

页面加载事件

load事件

语法

注意

DOMContentLoaded事件

语法

总结

页面加载事件有哪两个?如何添加?

load 事件

DOMContentLoaded事件

页面滚动事件

存在原因

scroll监听整个页面滚动

页面滚动事件-获取位置

scrollLeft和scrollTop(属性)

示例代码

1.被卷去的头部或者左侧用那个属性?是否可以读取和修改?

2.检测页面滚动的头部距离(被卷去的头部)用那个属性?

示例项目:显示导航和返回顶部案例

总结


前言

醉后不知天在水,满船清梦压星河


页面加载事件和页面滚动事件

页面加载事件

加载外部资源(如图片,外联CSS和JavaScript)完毕后触发的事件

存在原因有些时候需要等页面资源全部处理完了做一些事情

老代码喜欢把 script 写在 head 中,这时候直接找 dom 元素找不到

load事件

监听页面所有资源加载完毕

语法
window.addEventListener('load',function(){//添加事件})
注意

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

当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像等完全加载

DOMContentLoaded事件

在 HTML 文档的初始解析完成后立即触发。

语法
document.addEventListener('DOMContentLoaded', function () {})

总结

页面加载事件有哪两个?如何添加?

load 事件

监听整个页面资源给 window 加

DOMContentLoaded事件

给document 加无需等待样式表、图像等完全加载

页面滚动事件

滚动条在滚动的时候持续触发的事件

存在原因

很多网页需要检测用户把页面滚动到某个区域后做一些处理,比如固定导航栏,比如返回顶部

事件名

scroll监听整个页面滚动

window.addEventListener(‘scroll’.function(){​ }

给window或document添加scroll事件

页面滚动事件-获取位置

scrollLeft和scrollTop(属性)

获取被卷去的大小获取元素内容往左、往上滚出去看不到的距离,这两个值是可读写的

overflow:scrool/auto

可以给盒子加滚动属性

示例代码

<!DOCTYPE html>
<html lang="en">
​
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>页面滚动事件示例</title><style>body {font-family: Arial, sans-serif;margin: 0;padding: 0;height: 2000px;/* 设置一个较大的高度以便于滚动 */}
​.scroll-top {position: fixed;bottom: 20px;right: 20px;display: none;background-color: #007BFF;color: white;padding: 10px 20px;border: none;border-radius: 5px;cursor: pointer;z-index: 1000;}
​.scroll-top:hover {background-color: #0056b3;}</style>
</head>
​
<body><h1>页面滚动事件示例</h1><p>滚动页面以查看效果。</p><button class="scroll-top" id="scrollTopButton">回到顶部</button>
​<script>document.addEventListener('DOMContentLoaded', function () {const scrollTopButton = document.getElementById('scrollTopButton');
​// 监听滚动事件window.addEventListener('scroll', function () {// 获取当前滚动位置const scrollPosition = window.scrollY || document.documentElement.scrollTop;
​// 如果滚动位置大于 200 像素,显示回到顶部按钮if (scrollPosition > 200) {scrollTopButton.style.display = 'block';} else {scrollTopButton.style.display = 'none';}});
​// 回到顶部按钮点击事件scrollTopButton.addEventListener('click', function () {window.scrollTo({top: 0,behavior: 'smooth' // 平滑滚动});});});</script>
</body>
​
</html>

1.被卷去的头部或者左侧用那个属性?是否可以读取和修改?

scrollTop /scrollLeft可以读取,也可以修改(赋值)

2.检测页面滚动的头部距离(被卷去的头部)用那个属性?

document.documentElement.scrollTop

示例项目:显示导航和返回顶部案例

<!DOCTYPE html>
<html lang="en">
​
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>侧边栏和返回顶部示例</title><style>body {font-family: Arial, sans-serif;margin: 0;padding: 0;height: 2000px;/* 设置一个较大的高度以便于滚动 */}
​.sidebar {position: fixed;top: 0;left: -200px;width: 200px;height: 100%;background-color: rgba(173, 216, 230, 0.5);/* 浅蓝半透明 */transition: left 0.3s ease;padding: 20px;box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);}
​.sidebar.show {left: 0;}
​.sidebar ul {list-style-type: none;padding: 0;}
​.sidebar ul li {margin-bottom: 10px;padding: 5px 0;transition: background-color 0.3s ease;}
​.sidebar ul li a {text-decoration: none;color: #333;font-size: 16px;display: block;padding: 5px 10px;}
​.sidebar ul li:hover {background-color: rgba(144, 238, 144, 0.5);/* 浅绿半透明 */}
​.scroll-top {position: fixed;bottom: 20px;right: 20px;display: none;background-color: #007BFF;color: white;padding: 10px 20px;border: none;border-radius: 5px;cursor: pointer;z-index: 1000;}
​.scroll-top:hover {background-color: #0056b3;}
​.content {margin-left: 60px;padding: 20px;margin-top: 60px;/* 确保内容不会被固定的侧边栏遮挡 */}
​h1 {margin-top: 50px;}</style>
</head>
​
<body><div class="sidebar" id="sidebar"><ul><li><a href="#section1">Section 1</a></li><li><a href="#section2">Section 2</a></li><li><a href="#section3">Section 3</a></li></ul></div>
​<button class="scroll-top" id="scrollTopButton">回到顶部</button>
​<div class="content"><h1 id="section1">Section 1</h1><p>内容...</p><h1 id="section2">Section 2</h1><p>内容...</p><h1 id="section3">Section 3</h1><p>内容...</p></div>
​<script>document.addEventListener('DOMContentLoaded', function () {const sidebar = document.getElementById('sidebar');const scrollTopButton = document.getElementById('scrollTopButton');
​// 监听滚动事件window.addEventListener('scroll', function () {// 获取当前滚动位置const scrollPosition = window.scrollY || document.documentElement.scrollTop;
​// 如果滚动位置大于 200 像素,显示侧边栏和回到顶部按钮if (scrollPosition > 200) {sidebar.classList.add('show');scrollTopButton.style.display = 'block';} else {sidebar.classList.remove('show');scrollTopButton.style.display = 'none';}});
​// 回到顶部按钮点击事件scrollTopButton.addEventListener('click', function () {window.scrollTo({top: 0,behavior: 'smooth' // 平滑滚动});});});</script>
</body>
​
</html>


总结

欲将轻骑逐,大雪满弓刀

相关文章:

前端学习-页面加载事件和页面滚动事件(三十二)

目录 前言 页面加载事件和页面滚动事件 页面加载事件 load事件 语法 注意 DOMContentLoaded事件 语法 总结 页面加载事件有哪两个?如何添加? load 事件 DOMContentLoaded事件 页面滚动事件 存在原因 scroll监听整个页面滚动 页面滚动事件-获取位置 scrollLef…...

C++:将函数参数定义为const T的意义

C++很多函数的参数都会定义为const T&,那么这么做的意义是什么呢? 避免拷贝:通过引用传递参数而不是值传递,可以避免对象的拷贝,从而提高性能,特别是当对象较大时。 保护数据:使用const关键字可以防止函数修改传入的参数,确保数据的安全性和一致性。 对于保护数据这…...

Formily 如何进行表单验证

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

安宝特方案 | AR眼镜:远程医疗的“时空折叠者”,如何为生命争夺每一分钟?

行业痛点&#xff1a;当“千里求医”遇上“资源鸿沟” 20世纪50年代&#xff0c;远程会诊的诞生曾让医疗界为之一振——患者不必跨越山河&#xff0c;专家无需舟车劳顿&#xff0c;一根电话线、一张传真纸便能架起问诊的桥梁。然而&#xff0c;传统远程医疗的局限也日益凸显&a…...

使用git commit时‘“node“‘ 不是内部或外部命令,也不是可运行的程序

第一种&#xff1a; 使用git commit -m "xxx"时会报错&#xff0c;我看网上的方法是在命令行后面添加--no-verify&#xff1a;git commit -m "主题更新" --no-verify&#xff0c;但是不可能每次都添加。 最后解决办法是&#xff1a;使用git config --lis…...

Python分享20个Excel自动化脚本

在数据处理和分析的过程中&#xff0c;Excel文件是我们日常工作中常见的格式。通过Python&#xff0c;我们可以实现对Excel文件的各种自动化操作&#xff0c;提高工作效率。 本文将分享20个实用的Excel自动化脚本&#xff0c;以帮助新手小白更轻松地掌握这些技能。 1. Excel单…...

nodejs - vue 视频切片上传,本地正常,线上环境导致磁盘爆满bug

nodejs 视频切片上传&#xff0c;本地正常&#xff0c;线上环境导致磁盘爆满bug 原因&#xff1a; 然后在每隔一分钟执行du -sh ls &#xff0c;发现文件变得越来越大&#xff0c;即文件下的mp4文件越来越大 最后导致磁盘直接爆满 排查原因 1、尝试将m3u8文件夹下的所有视…...

瑞友天翼应用虚拟化系统 GetPwdPolicy SQL注入漏洞复现

免责声明 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在使…...

【MySQL — 数据库基础】深入解析MySQL的聚合查询

1. 聚合查询 1.1 聚合函数 函数说明COUNT ( [DISTINCT] expr)返回查询到的数据的数量( 行数 )SUM ( [DISTINCT] expr)返回查询到的数据的总和&#xff0c;不是数字没有意义AVG ( [DISTINCT] expr)返回查询到的数据的平均值&#xff0c;不是数字没有意义MAX( [DISTINCT] expr)…...

22.3、IIS安全分析与增强

目录 IIS安全威胁分析iis安全机制iis安全增强 IIS安全威胁分析 iis是微软公司的Web服务软件&#xff0c;主要提供网页服务&#xff0c;除此之外还可以提供其他服务&#xff0c;第一个最主要的是网页服务&#xff0c;第二个是SMTP邮件服务&#xff0c;第三个是FTP文件传输服务。…...

windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)

环境准备: 确定部署方案请参考:DeepSeek-R1系列(1.5b/7b/8b/32b/70b/761b)大模型部署需要什么硬件条件-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确定部署方案:DeepSeek-R1:7b + Ollama + Open WebUI 1. 安装 Ollama Ollama 是一…...

港中文腾讯提出可穿戴3D资产生成方法BAG,可自动生成服装和配饰等3D资产如,并适应特定的人体模型。

今天给大家介绍一种名为BAG&#xff08;Body-Aligned 3D Wearable Asset Generation&#xff09;的新方法&#xff0c;可以自动生成可穿戴的3D资产&#xff0c;如服装和配饰&#xff0c;以适应特定的人体模型。BAG方法通过构建一个多视图图像扩散模型&#xff0c;生成与人体对齐…...

【人工智能】Python中的序列到序列(Seq2Seq)模型:实现机器翻译

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 序列到序列(Seq2Seq)模型是自然语言处理(NLP)中一项核心技术,广泛应用于机器翻译、语音识别、文本摘要等任务。本文深入探讨Seq2Seq模…...

34.日常算法

1.合并区间 题目来源 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&#x…...

DeepSeek深度思考:客户端(Android/iOS)架构设计指南

目标读者&#xff1a;中高级开发者、架构师 适用场景&#xff1a;大型复杂应用开发、跨团队协作、长期维护迭代 一、架构设计核心原则 1.模块化&#xff08;Modularization&#xff09; 横向拆分&#xff1a;按功能边界划分&#xff08;如登录、支付、消息模块&#xff09;纵向…...

2025 年前端开发现状分析:卷疯了还是卷麻了?

一、前端现状&#xff1a;框架狂飙&#xff0c;开发者崩溃 如果你是个前端开发者&#xff0c;那么你大概率经历过这些场景&#xff1a; 早上打开 CSDN&#xff08;或者掘金&#xff0c;随便&#xff09;&#xff0c;发现又有新框架发布了&#xff0c;名字可能是 VueXNext.js 之…...

数据库 绪论

目录 数据库基本概念 一.基本概念 1.信息 2.数据 3.数据库&#xff08;DB&#xff09; 4.数据库管理系统&#xff08;DBMS&#xff09; 5.数据库系统&#xff08;DBS&#xff09; 二.数据管理技术的发展 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 4.数据库管…...

【AIGC魔童】DeepSeek v3提示词Prompt书写技巧

【AIGC魔童】DeepSeek v3提示词Prompt书写技巧 &#xff08;1&#xff09;基础通用公式&#xff08;适用80%场景&#xff09;&#xff08;2&#xff09;问题解决公式&#xff08;决策支持&#xff09;&#xff08;3&#xff09;创意生成公式&#xff08;4&#xff09;学习提升公…...

Docker 部署 RabbitMQ | 自带延时队列

一、获取镜像 docker pull farerboy/rabbitmq:3.9.9 二、运行镜像 docker run -d --name rabbitmq \n --hostname rabbitmq \n -p 15672:15672/tcp \n -p 5672:5672/tcp \n -v /wwwroot/opt/docker/rabbitmq:/var/lib/rabbitmq \n farerboy/rabbitmq:3.9.9 备注&#xff1a;…...

【‌Unity】Unity中物体的static属性作用

‌Unity中物体的static属性主要用于优化游戏性能和简化渲染过程。‌ Unity中物体的static属性的作用 优化渲染性能‌&#xff1a;当物体被标记为static时&#xff0c;Unity会在游戏运行时将其视为静止的物体&#xff0c;这意味着这些物体的渲染信息不会随着每一帧的更新而变化…...

网络编程基础1

七层协议模型和四层协议模型 七层协议模型&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 四层协议模型&#xff1a;链路层、网络层、传输层、应用层 TCP通信流程 服务器端 (1)创建socket(socket) (2)绑定自己的IP(bind) (3)监听客户端连接(liste…...

跨越边界,大模型如何助推科技与社会的完美结合?

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 概述 2024年&#xff0c;大模型技术已成为人工智能领域的焦点。这不仅仅是一项技术进步&#xff0c;更是一次可能深刻影响社会发展方方面面的变革。大模型的交叉能否推动技术与社会的真正融合&#xff1f;2025年…...

kafka生产端之架构及工作原理

文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前&#xff0c;有可能需要经历拦截器&#xff08;Interceptor&#xff09;、序列化器&#xff08;Serializer&#xff09;和分区器&#xff08;Partitioner&#xff09;等一系列的作用&#xff0c;那么在此之后又会…...

在 Windows 上使用 ZIP 包安装 MySQL 的详细步骤

以下是使用官方 ZIP 包在 Windows 上安装 MySQL 的详细步骤&#xff0c;确保能通过 mysql -uroot -p 成功连接。 步骤 1&#xff1a;下载 MySQL ZIP 包 访问 MySQL 官方下载页面&#xff1a; https://dev.mysql.com/downloads/mysql/选择 Windows (x86, 64-bit), ZIP Archive&…...

【web自动化】指定chromedriver以及chrome路径

selenium自动化&#xff0c;指定chromedriver&#xff0c;以及chrome路径 对应这篇文章&#xff0c;可以点击查看&#xff0c;详情 from selenium import webdriverdef get_driver():# 获取配置对象option webdriver.ChromeOptions()option.add_experimental_option("de…...

记录 | WPF创建和基本的页面布局

目录 前言一、创建新项目注意注意点1注意点2 解决方案名称和项目名称 二、布局2.1 Grid2.1.1 RowDefinitions 行分割2.1.2 Row & Column 行列定位区分 2.1.3 ColumnDefinitions 列分割 2.2 StackPanel2.2.1 Orientation 修改方向 三、模板水平布局【Grid中套StackPanel】中…...

mysql 存储过程和自定义函数 详解

首先创建存储过程或者自定义函数时&#xff0c;都要使用use database 切换到目标数据库&#xff0c;因为存储过程和自定义函数都是属于某个数据库的。 存储过程是一种预编译的 SQL 代码集合&#xff0c;封装在数据库对象中。以下是一些常见的存储过程的关键字&#xff1a; 存…...

Maven 中常用的 scope 类型及其解析

在 Maven 中&#xff0c;scope 属性用于指定依赖项的可见性及其在构建生命周期中的用途。不同的 scope 类型能够影响依赖项的编译和运行阶段。以下是 Maven 中常用的 scope 类型及其解析&#xff1a; compile&#xff08;默认值&#xff09;&#xff1a; 这是默认的作用域。如果…...

SpringCloud - Nacos注册/配置中心

前言 该博客为Nacos学习笔记&#xff0c;主要目的是为了帮助后期快速复习使用 学习视频&#xff1a;7小快速通关SpringCloud 辅助文档&#xff1a;SpringCloud快速通关 源码地址&#xff1a;cloud-demo 一、简介 Nacos官网&#xff1a;https://nacos.io/docs/next/quickstar…...

C++ 继承(1)

1.继承概念 我们平时有时候在写多个有内容重复的类的时候会很麻烦 比如我要写Student Teacher Staff 这三个类 里面都要包含 sex name age成员变量 唯一不同的可能有一个成员变量 但是这三个成员变量我要写三遍 太麻烦了 有没有好的方式呢&#xff1f; 有的 就是继承…...