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

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

事件委托改造 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.kler.cn/a/509936.html

相关文章:

  • 浅谈计算机网络04 | 现代网络需求与技术支撑
  • 使用Pydantic驾驭大模型
  • SQL ON与WHERE区别
  • turtle教学课程课堂学习考试在线网站
  • unity学习18:unity里的 Debug.Log相关
  • Android CustomTextField
  • Linux 音视频入门到实战专栏(视频篇)视频编解码 MPP
  • Apache SeaTunnel 荣登 2024 年度中间件开源项目 Top 50 榜单
  • Kali环境变量技巧(The Environment Variable Technique Used by Kali
  • 鸿蒙(HarmonyOS)的开发
  • TypeScript 使用 VSCode 简介
  • 算法4(力扣206)-反转链表
  • Hack The Box-Starting Point系列Oopsie
  • TCP Window Full是怎么来的
  • 游戏画质升级史的思考
  • DEBERTA:具有解耦注意力机制的解码增强型BERT
  • 豆包MarsCode:构造特定数组的逆序拼接
  • 通信协议之多摩川编码器协议
  • LabVIEW 实现线路板 PCB 可靠性测试
  • 网络安全 | 域名和DNS详解
  • vim使用指南
  • Armv8/Armv9架构从入门到精通-介绍
  • nss刷题3
  • .Net Core微服务入门系列(一)——项目搭建
  • Conda 常用操作命令与使用示例
  • CC工具箱使用指南:【Excel点集转面要素(批量)】