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

目录

前言

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

页面加载事件

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>


总结

欲将轻骑逐,大雪满弓刀

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

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

相关文章

【C++高并发服务器WebServer】-12:TCP详解及实现

本文目录 一、TCP通信流程二、套接字函数2.1 socket()2.2 bind()2.3 listen()2.4 accept()2.5 connect() 三、demo实现3.1 server端代码3.2 client端代码 四、TCP三次握手五、TCP滑动窗口六、TCP四次挥手七、多进程并发服务器 一、TCP通信流程 先来讲讲服务器端&#xff0c;是…

【Maven】项目管理工具-Maven

目录 1. Maven简介 1.1 项目管理 1.2 项目构建 1.3 项目构建工具 1.4 Maven的四大特征 1.4.1 依赖管理系统 1.4.2 多模块构建 1.4.3 一致的项目结构 1.4.4 一致的构建模型和插件机制 1.5 Maven模型 ​编辑 2.maven的安装配置 2.1 Maven的安装配置 2.1.1检测jdk的版…

dijkstra算法类型题解

dijkstra算法&#xff08;有权图&#xff0c;无权图&#xff09;&#xff1a; 带权路径长度——当图是带权图时&#xff0c;一条路径上所有边的权值之和&#xff0c;称为该路径的带权路径长度 初始化三个数组&#xff0c;final标记各顶点是否已找到最短路径&#xff0c;dist最…

RabbitMQ 消息顺序性保证

方式一&#xff1a;Consumer设置exclusive 注意条件 作用于basic.consume不支持quorum queue 当同时有A、B两个消费者调用basic.consume方法消费&#xff0c;并将exclusive设置为true时&#xff0c;第二个消费者会抛出异常&#xff1a; com.rabbitmq.client.AlreadyClosedEx…

基于开源AI智能名片2+1链动模式S2B2C商城小程序的个人IP活动运营策略与影响力提升研究

摘要&#xff1a;本文围绕个人IP运营者借助活动运营提升影响力这一主题&#xff0c;深入探讨如何将开源AI智能名片21链动模式S2B2C商城小程序融入借势、造势、提升参与感及用户激励等活动运营环节。通过分析该创新模式与活动运营各要素的结合点&#xff0c;为个人IP运营者提供切…

计算机图形学论文 | 面向制造的设计: 五轴铣削的几何制造可行性评估

&#x1f355;&#x1f355;&#x1f355;宝子们好久不见&#xff0c;新年快乐~~~&#xff0c;今天我们来更新一篇关于五轴CNC制造中的模型制造可达性分析的论文。老规矩&#xff1a; 红色是名词&#xff0c;蓝色是结论&#xff0c;绿色是文章工作&#xff0c;黄色是一些其他重…

deepseek搭建本地知识库

ollama是一个大模型的运行框架&#xff0c;在上面可以运行不同的大模型 部署deepseek 下载ollama&#xff1a;https://ollama.com/ 下载模型&#xff1a;https://ollama.com/library/deepseek-r1:1.5b ollama run deepseek-r1:1.5b运行起来之后&#xff0c;本地命令行就可以…

青少年编程与数学 02-009 Django 5 Web 编程 01课题、概要

青少年编程与数学 02-009 Django 5 Web 编程 01课题、概要 一、Django 5Django 5 的主要特性包括&#xff1a; 二、MVT模式三、官方网站四、内置功能数据库 ORM&#xff08;对象关系映射&#xff09;用户认证和授权表单处理模板引擎URL 路由缓存框架国际化和本地化安全性功能管…

deepseek本地部署-linux

1、官网推荐安装方法(使用脚本,我绕不过github,未采用) 登录ollama下载网站https://ollama.com/download/linux,linux下有下载脚本。 正常来说,在OS系统下直接执行脚本即可。 2、手动安装方法 2.1获取ollama-linux-arm64.tgz wget https://ollama.com/download/ollam…

多光谱技术在华为手机上的应用发展历史

2018 年&#xff0c;华为 P20 系列首次搭载 5 通道色温传感器&#xff0c;可帮助手机在不同光照条件下保持画面色彩一致性。 2020 年&#xff0c;华为 P40 系列搭载 8 通道多光谱色温传感器&#xff08;实际为 11 通道&#xff0c;当时只用 8 个通道检测可见光&#xff09;&am…

增加工作台菜单页面,AI问答应用支持上下文设置,数据库表索引优化,zyplayer-doc 2.4.8 发布啦!

zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具&#xff0c;支持在线编辑富文本、Markdown、表格、Office文档、API接口、思维导图、Drawio以及任意的文本文件&#xff0c;专为私有化部署而设计&#xff0c;最大程度上保证企业或个人的数据安全&#xff0c;支持以内…

4.python+flask+SQLAlchemy+达梦数据库

前提 1.liunx Centos7上通过docker部署了达梦数据库。从达梦官网下载的docker镜像。(可以参考前面的博文) 2.windows上通过下载x86,win64位的达梦数据库,只安装客户端,不安装服务端。从达梦官网下载达梦数据库windows版。(可以参考前面的博文) 这样就可以用windows的达…

基础入门-网站协议身份鉴权OAuth2安全Token令牌JWT值Authirization标头

知识点&#xff1a; 1、网站协议-http/https安全差异&#xff08;抓包&#xff09; 2、身份鉴权-HTTP头&OAuth2&JWT&Token 一、演示案例-网站协议-http&https-安全测试差异性 1、加密方式 HTTP&#xff1a;使用明文传输&#xff0c;数据在传输过程中可以被…

【零基础学Mysql】常用函数讲解,提升数据操作效率的利器

以耳倾听世间繁华&#xff0c;以语表达心中所想 大家好,我是whisperrrr. 前言&#xff1a; 大家好&#xff0c;我是你们的朋友whisrrr。在日常工作中&#xff0c;MySQL作为一款广泛使用的开源关系型数据库&#xff0c;其强大的功能为我们提供了便捷的数据存储和管理手段。而在…

C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输

CURL开源库介绍 CURL 是一个功能强大的开源库&#xff0c;用于在各种平台上进行网络数据传输。它支持众多的网络协议&#xff0c;像 HTTP、HTTPS、FTP、SMTP 等&#xff0c;能让开发者方便地在程序里实现与远程服务器的通信。 CURL 可以在 Windows、Linux、macOS 等多种操作系…

win编译openssl

一、perl执行脚本 1、安装perl脚本 perl安装 2、配置perl脚本 perl Configure VC-WIN32 no-asm no-shared --prefixE:\openssl-x.x.x\install二、编译openssl 1、使用vs工具编译nmake 如果使用命令行nmake编译会提示“无法打开包括文件: “limits.h”“ 等错误信息 所以…

idea启动报错# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffccf76e433

# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc0x00007ffccf76e433, pid17288, tid6696 # # JRE version: (11.0.248) (build ) # Java VM: OpenJDK 64-Bit Server VM (11.0.248-LTS, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64) 不知道为什么…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>不同路径 III

目录 整体思路&#xff1a;代码设计&#xff1a;代码呈现&#xff1a; 整体思路&#xff1a; 代码设计&#xff1a; 代码呈现&#xff1a; class Solution {int ret,step;int m,n;boolean[][] vis;public int uniquePathsIII(int[][] grid) {m grid.length;n grid[0].length…

Idea 2024.3 使用CodeGPT插件整合Deepseek

哈喽&#xff0c;大家好&#xff0c;我是浮云&#xff0c;最近国产大模型Deepseek异常火爆&#xff0c;作为程序员我也试着玩了一下&#xff0c;首先作为简单的使用&#xff0c;大家进入官网&#xff0c;点击开始对话即可进行简单的聊天使用&#xff0c;点击获取手机app即可安装…

Houdini subuv制作输出阵列图

在游戏开发中经常需要用到sheet阵列图&#xff0c;并用其制作翻页动画。通过Houdini强大的节点组合可以配合输出subuv阵列图供游戏引擎使用。 本文出处&#xff1a;https://zhuanlan.zhihu.com/p/391796978 博主参考学习并写该文。 1.在obj分类下创建font节点以进行测试&#…