Javascript的API基本内容(三)

news2024/9/30 19:42:30

一、事件流

  • 假设页面里有个div,当触发事件时,会经历两个阶段,分别是捕获阶段、冒泡阶段
  • 简单来说:捕获阶段是 从父到子 冒泡阶段是从子到父
  • 实际工作都是使用事件冒泡为主

二、页面加载事件

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

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

事件名:load

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

window.addEventListener('load', function() {
    // xxxxx
})

三、元素滚动事件

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

window.addEventListener('scroll', function() {
    // xxxxx
})

四、页面尺寸事件

会在窗口尺寸改变的时候触发事件:

window.addEventListener('resize', function() {
    // xxxxx
})

元素尺寸与位置

获取元素的自身宽高、包含元素自身设置的宽高、padding、border

offsetWidth和offsetHeight

获取出来的是数值,方便计算

注意: 获取的是可视宽高, 如果盒子是隐藏的,获取的结果是0

五、offsetWidth和offsetHeight

offsetLeft和offsetTop 注意是只读属性,获取元素距离自己定位父级元素的左、上距离

 案例:当指定模块距离父元素的距离小于滚动的距离,显示菜单栏,反之隐藏

<body>
    <div class="header">我是顶部导航栏</div>
    <div class="content">
      <div class="sk">秒杀模块</div>
    </div>
    <div class="backtop">
      <img src="./images/close2.png" alt="" />
      <a href="javascript:;"></a>
    </div>
    <script>
      const header = document.querySelector(".header");
      const sk = document.querySelector(".sk");
      window.addEventListener("scroll", function () {
        let n = document.documentElement.scrollTop;
        console.log(n);
        console.log(sk.offsetTop);
        if (n >= sk.offsetTop) {
          header.style.top = 0;
        } else {
          header.style.top = "-80px";
        }
      });
    </script>
  </body>

六、总结

七、综合案例

 需求:点击不同的模块,页面可以自动跳转不同的位置

   // 第一大模块,页面滑动可以显示和隐藏
      (function () {
        const list = document.querySelector(".xtx-elevator");
        window.addEventListener("scroll", function () {
          let n = document.documentElement.scrollTop;
          if (n >= 100) {
            list.style.opacity = 1;
          } else {
            list.style.opacity = 0;
          }
        });
        // 点击顶部返回
        const backTop = document.querySelector("#backTop");
        backTop.addEventListener("click", function () {
          document.documentElement.scrollTop = 0;
        });
      })();
      // 第二大模块,点击导航栏跳转对应位置
      (function () {
        const list = document.querySelector(".xtx-elevator-list");
        list.addEventListener("click", function (e) {
          const old = document.querySelector(".xtx-elevator-list .active");
          console.log(e.target.dataset.name);
          if (old && e.target.dataset.name) {
            old.classList.remove("active");
          } else {
            e.target.classList.add("active");
          }
          // 大盒子距离顶部的距离
          const bigbox = document.querySelector(
            `.xtx_goods_${e.target.dataset.name}`
          ).offsetTop;

          document.documentElement.scrollTop = bigbox;
          console.log(bigbox);
        });
      })();
      // 页面滚动到对应位置,导航对应模块也自动发生变化
      window.addEventListener("scroll", function () {
        //  3.1  先移除类
        // 先获取这个active的对象
        const old = document.querySelector(".xtx-elevator-list .active");
        // console.log(old)
        // 判断 如果原来有active类的对象,就移除类,如果开始就没有对象,就不删除,所以不报错
        if (old) old.classList.remove("active");
        // 3.2 判断页面当前滑动的位置,选择小盒子
        const news = document.querySelector(".xtx_goods_new");
        const popular = document.querySelector(".xtx_goods_popular");
        const brand = document.querySelector(".xtx_goods_brand");
        const topic = document.querySelector(".xtx_goods_topic");
        let n = document.documentElement.scrollTop;
        if (n >= news.offsetTop && n < popular.offsetTop) {
          document.querySelector("[data-name=new]").classList.add("active");
        } else if (n >= popular.offsetTop && n < brand.offsetTop) {
          document.querySelector("[data-name=popular]").classList.add("active");
        } else if (n >= brand.offsetTop && n < topic.offsetTop) {
          document.querySelector("[data-name=brand]").classList.add("active");
        } else if (n >= topic.offsetTop) {
          document.querySelector("[data-name=topic]").classList.add("active");
        }
      });

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

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

相关文章

Portraiture4免费磨皮插件支持PS/LR

Portraiture 4免去了繁琐的手工劳动&#xff0c;选择性的屏蔽和由像素的平滑&#xff0c;以帮助您实现卓越的肖像润色。智能平滑&#xff0c;并删除不完善之处&#xff0c;同时保持皮肤的纹理和其他重要肖像的细节&#xff0c;如头发&#xff0c;眉毛&#xff0c;睫毛等。 一键…

Python Flask + Echarts 轻松制作动态酷炫大屏( 附代码)

目录一、确定需求方案二、整体架构设计三、编码实现 &#xff08;关键代码&#xff09;四、完整代码五、运行效果1.动态实时更新数据效果图 说明: 其中 今日抓拍&#xff0c;抓拍总数&#xff0c;预警信息统计&#xff0c;监控点位统计图表 做了动态实时更新处理。 ​ 2.静态…

Java岗面试题--Java并发(volatile 专题)

目录1. 面试题一&#xff1a;谈谈 volatile 的使用及其原理补充&#xff1a;内存屏障volatile 的原理2. 面试题二&#xff1a;volatile 为什么不能保证原子性3. 面试题三&#xff1a;volatile 的内存语义4. 面试题四&#xff1a;volatile 的实现机制5. 面试题五&#xff1a;vol…

用c语言模拟实现常用字符串函数

目录 一.常用字符串函数介绍 1.strlen 2. strcpy 3.strcmp 4.strcat 5.strstr 二.模拟实现常用字符串函数 1.strlen 2.strcpy 3.strcmp 4.strcat 5.strstr 一.常用字符串函数介绍 1.strlen 字符串strlen是用来求字符串长度的&#xff0c;我们可以打开cpp网站查看有关…

浅谈模型评估选择及重要性

作者&#xff1a;王同学 来源&#xff1a;投稿 编辑&#xff1a;学姐 模型评估作为机器学习领域一项不可分割的部分&#xff0c;却常常被大家忽略&#xff0c;其实在机器学习领域中重要的不仅仅是模型结构和参数量&#xff0c;对模型的评估也是至关重要的&#xff0c;只有选择那…

vector迭代器失效与深浅拷贝问题

目录 1、vector迭代器失效问题 1.1、insert迭代器失效 扩容导致野指针 意义变了 官方库windows下VS和linux下对insert迭代器失效的处理 1.2、erase迭代器失效 官方库windows下VS和linux下对erase迭代器失效的处理 1.3、迭代器失效总结 2、深浅拷贝问题 1、vector迭…

GeoServer发布数据进阶

GeoServer发布数据进阶 GeoServer介绍 GeoServer是用于共享地理空间数据的开源服务器。 它专为交互操作性而设计&#xff0c;使用开放标准发布来自任何主要空间数据源的数据。 GeoServer实现了行业标准的 OGC 协议&#xff0c;例如网络要素服务 &#xff08;WFS&#xff09;…

Java【优先级队列】模拟实现 + 【PriorityQueue】介绍

文章目录一、什么是优先级队列二、模拟实现1, 实现堆的基本操作1.1, 创建堆1.2.1, 向下调整1.2, 堆的插入1.2.1, 向上调整1.2, 堆的删除2, 实现优先级队列2.1, offer -- 插入数据2.1, poll -- 删除数据三、Java提供的PriorityQueue1, PriorityQueue说明2, 使用PriorityQueue2.1…

【Linux】安装Tomcat教程

目录 1.上传安装包 2.解压安装包 3.启动Tomcat 4.查看启动日志 5.查看进程 6.开放端口 7.停止Tomcat 1.上传安装包 使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux(与前面上传JDK安装包步骤 一致)。 2.解压安装包 将上传上来的安装包解压到指定目录…

2023年想跳槽,什么类型的人才需求最多?

某招聘网站资深HR对此表示&#xff1a;纵观当前招聘市场&#xff0c;无论是比较火爆的互联网行业还是传统行业&#xff0c;技能型人才都是最受欢迎的人才之一&#xff1b;那些拥有职场一技之能的跳槽者往往跳的结果更好&#xff0c;包括薪酬水平和发展空间、重视程度等。 那选择…

一个更适合Java初学者的轻量级开发工具:BlueJ

Java是世界上最流行的编程语言之一&#xff0c;它被广泛用于从Web开发到移动应用的各种应用程序。大部分Java工程师主要是用IDEA、Eclipse为主&#xff0c;这两个开发工具由于有强大的能力&#xff0c;所以复杂度上就更高一些。如果您刚刚开始使用Java&#xff0c;或者您更适合…

如何简化跨网络安全域的文件发送流程,大幅降低IT人员工作量?

为什么要做安全域的隔离&#xff1f; 随着企业数字化转型的逐步深入&#xff0c;企业投入了大量资源进行信息系统建设&#xff0c;信息化程度日益提升。在这一过程中&#xff0c;企业也越来越重视核心数据资产的保护&#xff0c;数据资产的安全防护成为企业面临的重大挑战。 …

自动化测试学习步骤及路线(超详细)

随着测试行业的不断发展&#xff0c;目前企业对测试人员要求越来越高&#xff0c;仅仅响应需求的功能测试人员基本饱和或是留给了校招生。而对于社招渠道的应聘者&#xff0c;企业越来越多地要求有一定的自动化或是代码经验&#xff0c;能解决工作过程中遇到的问题&#xff0c;…

ledcode【用队列实现栈】

目录 题目描述&#xff1a; 解析题目 代码解析 1.封装一个队列 1.2封装带两个队列的结构体 1.3封装指向队列的结构体 1.4入栈函数实现 1.5出栈函数实现 1.6取栈顶数据 1.7判空函数实现 题目描述&#xff1a; 解析题目 这个题我是用c语言写的&#xff0c;所以队列的pu…

魔兽世界WoW注册网站搭建——-Liunx

问题背景哎 搭建了一个魔兽3.35&#xff08;纯洁版&#xff09;每当同学朋友要玩的时候我都直接worldserver上面打一个命令随之出现朋友的朋友也要玩想了想还是要有一个网站原本以为吧单机版里面网页的IP数据库改下可以了结果PHP报错了Unknown column sha_pass_hash in field l…

学校AI视频行为分析监测系统 opencv

学校AI视频行为分析监测系统通过pythonopencv网络模型AI视频分析技术&#xff0c;学校AI视频行为分析监测算法对学校区域人员打架行为识别、跌倒行为识别、翻墙识别、人员聚众识别、攀高识别、抽烟行为等进行智能识别预警。OpenCV的全称是Open Source Computer Vision Library&…

C#专栏目录(长期更新)

文章目录C# 基础C#进阶C#应用WPF基础WPF 3D小游戏C# 基础 1996年&#xff0c;微软用年薪三百万美刀的价格从Borland挖来了大神海尔斯伯格&#xff0c;开始了J开发&#xff0c;用以对抗Java。但SUN公司认为此举违反了Java开发平台的中立性&#xff0c;对微软提出诉讼。C#正是在…

RBAC 权限模型介绍

RBAC 权限&#xff1a; 一、关系&#xff1a; 这基于角色的访问控制的结构就叫RBAC结构。 二、RBAC 重要对象&#xff1a; 用户&#xff08;Employee&#xff09;&#xff1a;角色施加的主体&#xff1b;用户通过拥有某个或多个角色以得到对应的权限。角色&#xff08;Role&…

SQL零基础入门学习(十三)

上一篇&#xff08;SQL零基础入门学习&#xff08;十二&#xff09;&#xff09; SQL 视图&#xff08;Views&#xff09; 视图是可视化的表。 SQL CREATE VIEW 语句 在 SQL 中&#xff0c;视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列&#xff0c;就像一个…

jsp+servlet+javabean新闻发布系统

技术&#xff1a;Java、JSP等摘要&#xff1a;近年来,Internet技术得到迅速的发展,已经成为计算机产业的一个技术热点。促成Internet高速发展的因素之一就是Web技术。Web技术的发展使得那些具有交互动态页面、有条理的数据库查询、丰富信息内容的页面成为最吸引人的网页。浏览W…