事件委托,其他事件,电梯导航,固定导航

news2025/1/20 10:41:34

事件委托改造 tab 栏切换 

tab栏切换:前边的案例是 for 循环遍历每个 li 注册鼠标进入事件,给添加了 active类的 a 删除掉 active类,然后给点击的 a 添加上 active类(也就是将已经有的 active 类删除掉,为当前点击到的 a 加上 active类)

现在通过事件委托形式也就是不再给每个 li 注册点击事件给 li 中的 a 删除添加类了,而是给 a 的祖元素注册点击事件,但是其实点击的还是 a ,但是通过冒泡的话 点击 a 是能冒泡到祖先元素的,所以直接通过 祖 元素去监听点击事件

阻止默认行为 

其他事件 :

  • 页面加载事件
  • 页面滚动事件
  • 页面尺寸事件

页面加载事件:

  • 一般写在 head中的 js 代码是不能 执行,因为代码是从上往下, js 中找不到对应的 html 代码
  • 可以先加载外部资源,加载完毕时触发的事件:两种,一种 load , 一种 DOMContentLoaded

 

页面滚动事件 

大多数是想要知道 浏览器页面滚动了多少而不是 某个元素的滚动

 div 大于 100 显示,小于 100 隐藏

希望一打开滚动条不是在最顶部,而是与顶部有一段距离 。那么就写在滚动事件监听的外面为页面的滚动赋值,然后再事件监听的里面获取页面滚动的距离数字。

由此可见页面滚动是可读可写的

 ​

小兔鲜 电梯导航 案例:

  • 获取被卷去的滚动条数
  • 判断该条数是否大于300,大于的话就让透明度为1,显示侧边导航。否则就透明度为0,不显示侧边导航
  • 为 “顶部”按钮注册点击事件,点击回到页面尺寸为 (0,0)的位置,也就是顶部。也可以注册的是滚动条事件,直接滚动到数字为 0 的位置,也就是顶部

页面尺寸事件

 

仿京东固定导航栏案例:

  • 因为不是显示隐藏,是滑动,所以一开始位置 top 位置是 负的
  • 当滚动到 秒杀 模块 之后, top 位置慢慢变成 正数,也就是慢慢滑出来

一开始将 头部位置改为 -80,也就看不见了

如果 滚动到的位置头部大于等于 秒杀 模块的头部位置,那么就将头部导航显现出来,也就是让头部位置为 0 ,否则就是 -80px

改:const n = document.documentElement.scrollTop,图中写错了

还有一种写法就是三元运算符

实现 bilibili 点击小滑块移动效果

  • 给 导航 中每个 a 添加点击事件,运用事件委托的形式,也就是 a 的父级元素检测到点击时(其实该点击是 点击的 a ,但是冒泡之后连父级元素也一并点击了,所以父级元素检测到点击事件,也就是点击了 a ,那么就开始执行处理程序) 
  • 其次之所以还要判断是否点击的是 a ,是因为点击父级元素盒子的其他地方也是有反应的,而我们只是要点击了 a 时候的反应,所以还是要确保点击的是 a 标签。然后将 line线盒子移动到所点击的 事件的 左边位置

 

 

电梯导航案例:

防止变量污染,因为两个模块之间没有关系

为侧边导航添加点击事件,点击到的 a 判断其是否添加了 active,如是则删除再添加active类,没有的话就直接添加active类

点击侧边栏的 a ,页面滑动到相应的 板块。

  • 侧边栏的 a 中有自定义属性,而相应板块中的类名的最后一部分是相应的 a 中自定义属性值,所以可以获取 a 中自定义 属性值作为变量在获取相应模块元素应用到类时,作为类的最后部分。然后获取相应模块的上滚动距离。
  • 将该距离赋值为页面滚动距离

点击侧边栏时相应模块丝滑滚动

页面滚动,滚动到相应模块时给侧边导航相应的 a 加上 active 类

  • 首先页面滚动,将所有 active 类删除
  •  再者获取 4 个模块的大盒子
  • 判断页面滚动距离和各个模块上边距相比如何,在模块之间就加上 active 类

 

属性选择器

因为 有两个 input ,要选择所需要的那个与另一个的区别是 type 的值,所以属性选择器就是选择出不一样的

两个 input 最明显的就是一个有 value 属性,一个没有,那么就可以直接用 value 属性

 

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

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

相关文章

mongoose 支持https踩坑纪实

简述 mongoose是C编写的嵌入式web服务,它能够支持https协议,可以简单的部署,但要做到完美部署,不是那么容易。 部署方法 本人使用的是最新的7.16版,以前版本似乎是要通过修改 头文件中的 MG_ENABLE_SSL 宏定义&…

科研绘图系列:R语言绘制多种图形(multiple plots)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图输出画图2画图3画图4画图5系统信息介绍 科研绘图系列:R语言绘制多种图形(multiple plots) 加载R包 library(tidyverse) library(RColo…

QT 使用QSqlTableModel对数据库进行创建,插入,显示

文章目录 效果图概述功能点代码分析初始数据插入数据数据显示 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作,其他表格筛选,过滤等功能可看此博客 框架:数据模型使用QSqlTableModel,视图使用QTableView&#x…

Vscode:问题解决办法 及 Tips 总结

Visual Studio Code(简称VSCode)是一个功能强大的开源代码编辑器,广泛用于各种编程语言和开发场景,本博客主要记录在使用 VSCode 进行verilog开发时遇到的问题及解决办法,使用过程中的技巧 文章目录 扩展安装失败调试配…

FANUC机器人系统镜像备份与恢复的具体步骤(图文)

FANUC机器人系统镜像备份与恢复的具体步骤(图文) 镜像备份: 如下图所示,进入文件—工具—切换设备,找到插入的U盘UT1, 如下图所示,进入U盘目录后,创建目录,这里目录名称为11, 如下图所示࿰

模块化架构与微服务架构,哪种更适合桌面软件开发?

前言 在现代软件开发中,架构设计扮演着至关重要的角色。两种常见的架构设计方法是模块化架构与微服务架构。它们各自有独特的优势和适用场景,尤其在C#桌面软件开发领域,模块化架构往往更加具有实践性。本文将对这两种架构进行对比&#xff0…

使用Flask和Pydantic实现参数验证

使用Flask和Pydantic实现参数验证 1 简介 Pydantic是一个用于数据验证和解析的 Python 库,版本2的性能有较大提升,很多框架使用Pydantic做数据校验。 # 官方参考文档 https://docs.pydantic.dev/latest/# Github地址 https://github.com/pydantic/pyd…

游戏引擎学习第81天

仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中,讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分,因为当时主要的工作重心不在这里,但在实现过程中,发现地…

【Vue3 入门到实战】3. ref 和 reactive区别和适用场景

目录 ​编辑 1. ref 部分 1.1 ref定义基本数据类型 1.2 ref 定义引用数据类型 2. reactive 函数 3. ref 和 reactive 对比 3.1 原理 3.2 区别 3.3 使用原则 在 Vue 3 中 ref 和 reactive 是用于创建响应式数据的两个核心函数。它们都属于 Composition API 的一部分&…

蓝桥杯3525 公因数匹配 | 枚举+数学

题目传送门 这个题目是一个数学题,由于只需要找到存在大于1的公因数的两数,所以比较方便的做法是统计每一个数的(质)因数。可以通过筛法统计质因数降低复杂度,但是直接枚举因数也可以满足要求。使用字典记录每个因数出…

django应急物资管理系统

Django应急物资管理系统是一种高效、智能的管理系统,旨在应对自然灾害、事故灾难等突发事件,确保救援物资能够及时、准确地调配到需要的地方。 一、系统背景与意义 在现代社会,各类突发事件频繁发生,对人民生命财产安全构成严重…

python+django+Nacos实现配置动态更新-集中管理配置(实现mysql配置动态读取及动态更新)

一、docker-compose.yml 部署nacos服务 version: "3" services:mysql:container_name: mysql# 5.7image: mysql:5.7environment:# mysql root用户密码MYSQL_ROOT_PASSWORD: rootTZ: Asia/Shanghai# 初始化数据库(后续的初始化sql会在这个库执行)MYSQL_DATABASE: nac…

Qt Desiogn生成的ui文件转化为h文件

1.找到这个工具 2.查找到ui文件以及要转化为的h文件的路径。 3.在1中的工具输入uic /xx/xxx.ui -o /xx/xxx.h即可得到结果。

vim文本编辑器

vim命令的使用: [rootxxx ~]# touch aa.txt #首先创建一个文件 [rootxxx ~]# vim aa.txt #vim进入文件aa.txt进行编辑 vim是vi的升级版,具有以下三种基本模式: 输入模式(编辑模式) 点击i进入编辑模式 (说明…

大华Java开发面试题及参考答案 (上)

TCP 的三次握手和四次挥手过程中各个状态的细节是怎样的? TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,其三次握手和四次挥手过程涉及多个状态,以下是详细的状态细节: 三次握手…

乐乐音乐Compose-Desktop版

简介 乐乐音乐Compose-Desktop版主要是基于Compose-Desktop框架和musique开发的音乐播放器,它支持lrc歌词和动感歌词( ksc歌词、krc歌词、trc歌词、zrce歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 编译环境 ideaIU-2024.1.4、JD…

HTML5 教程(下)

HTML5 Video(视频) HTML5 Video(视频) 在本节内容中,你将了解到在HTML5中视频是如何工作的、主流浏览器支持的视频格式以及如何对网页中的视频进行控制。 很多站点都会使用到视频. HTML5 提供了展示视频的标准。 检测您的浏览器是否支持 HTML5 视频: …

计算机网络 (51)鉴别

前言 计算机网络鉴别是信息安全领域中的一项关键技术,主要用于验证用户或信息的真实性,以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身,对实体声称的身份进行唯一识别,以便验证其访问请…

力扣 有效的括号

括号匹配问题,找到符合的进行抵消。 题目 从题可以看出是嵌套的括号先匹配先做抵消,类似就近原则,这也是栈的典型例题。可以通过枚举多种不同的情况慢慢用if与else做返回。 时间复杂度:O(n),其中 n 是字符串的长度。…

阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI

通义灵码是基于阿里巴巴通义大模型研发的AI 智能编码助手,在通义灵码 1.0 时代,我们针对代码的生成、补全和问答,通过高效果、低时延,研发出了国内最受欢迎的编码助手。 在通义灵码 2.0 发布会上,阿里云通义实验室自然…