web APIs总结(2)

1. 页面滚动事件

  • 很多网页需要检测用户把页面滚动到某个区域后做一些处理, 比如固定导航栏、返回顶部
  • 事件名:scroll
  • 监听某个元素的内部滚动直接给某个元素加即可

获取位置
scrollLeft和scrollTop (属性)
(注:获取html元素写法:document.documentElement)

  • 获取被卷去的大小
  • 获取元素内容往左、往上滚出去看不到的距离
  • 这两个值是可读写
  • 检测页面滚动的头部距离(被卷去的头部)用那个属性?
    document.documentElement.scrollTop
    window.scrollTo
    在这里插入图片描述

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

load 事件:监听整个页面资源给 window
DOMContentLoaded:给 document 加;无需等待样式表、图像等完全加载

3. 页面尺寸事件

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

window.addEventListener('resize', function () {//执行的代码
})

检测屏幕宽度:

window.addEventListener('resize', function () {let w = document.documentElement.clientWidthconsole.log(w)
})

获取宽高clientWidth和clientHeight:获取元素的可见部分宽高(不包含边框,margin,滚动条等)

4. 元素尺寸于位置

通过js的方式,得到元素在页面中的位置

  • offsetWidth和offsetHeight是得到元素什么的宽高?(只读属性
    内容 + padding + bord
  • offsetTop和offsetLeft 得到位置以谁为准?
    有定位的父级;如果都没有则以 文档左上角 为准
    注意: 获取的是可视宽高, 如果盒子是隐藏的,获取的结果是0
  • element.getBoundingClientRect():方法返回元素的大小及其相对于视口的位置

5. 总结

在这里插入图片描述

6. 小tips

/* 页面滑动 */
html {/* 让滚动条丝滑的滚动 */scroll-behavior: smooth;
}

属性选择器:[data-name=new]

7. 日期对象方法

pic

显示格式化的时间:(输出:今天是: 2024年4月9号 23:23:48)

<div></div><script>const div = document.querySelector('div')function getMyDate() {const date = new Date()let h = date.getHours()let m = date.getMinutes()let s = date.getSeconds()//数字要补0h = h < 10 ? '0' + h : hm = m < 10 ? '0' + m : ms = s < 10 ? '0' + s : sreturn `今天是: ${date.getFullYear()}${date.getMonth() + 1}${date.getDate()}${h}:${m}:${s}`}div.innerHTML = getMyDate()//回调函数setInterval(function () {div.innerHTML = getMyDate()}, 1000)</script>

时间的另外一个写法:(输出:2024/4/9 23:29:03)

<div></div><script>const div = document.querySelector('div')// 得到日期对象const date = new Date()div.innerHTML = date.toLocaleString()  // 2022/4/1 09:41:21setInterval(function () {const date = new Date()div.innerHTML = date.toLocaleString()  // 2022/4/1 09:41:21}, 1000)// div.innerHTML = date.toLocaleDateString()  // 2022/4/1// div.innerHTML = date.toLocaleTimeString()  // 09:41:21</script>

8. 时间戳

  • 定义:是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式
  • 使用场景:果计算倒计时效果,前面方法无法直接计算,需要借助于时间戳完成
  • 日期对象方法里面月份和星期有什么注意的?月份是0~11, 星期是 0~6
  • 获取时间戳有哪三种方式?重点记住那个?
    date.getTime();+new Date();Date.now()
    重点记住 +new Date() 因为可以返回当前时间戳或者指定的时间戳

9. 查找DOM节点

  • 父节点查找:parentNode 属性;返回最近一级的父节点 找不到返回为null`(子元素.parentNode)
  • 子节点查找:children 属性 (重点);仅获得所有元素节点;返回的还是一个伪数组
    (父元素.children)
  • 查找兄弟节点用那个属性?nextElementSibling;previousElementSibling

10. 增加DOM节点(重要)

1. 创建节点

  • 即创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点
  • 创建元素节点方法:
//创造一个新的元素节点
document.createElement('标签名')

2. 追加节点

  • 要想在界面看到,还得插入到某个父元素中
  • 插入到父元素的最后一个子元素:
//插入到这个父元素的最后
父元素.appendChild(要插入的元素)
  • 插入到父元素中某个子元素的前面:
//插入到某个子元素的前面
父元素.insertBefore(插入的元素, 放到哪个元素的前面)

3. 克隆节点

//克隆一个已有的元素节点
元素.cloneNode(布尔值)

cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值

  • 若为true,则代表克隆时会包含后代节点(文字)一起克隆
  • 若为false,则代表克隆时不包含后代节点(文字)
  • 默认为false

11. 删除DOM节点

父元素.removeChild(要删除的元素)
  • 若一个节点在页面中已不需要时,可以删除它
  • 在 JavaScript 原生DOM操作中,要删除元素必须通过父元素删除
  • 注:
    不存在父子关系则删除不成功
    删除节点和隐藏节点(display:none) 有区别的: 隐藏节点还是存在的,但是删除,则从html中删除节点

12. 移动端事件

常见的触屏事件如下:
在这里插入图片描述

13. Swiper轮播图

swiper官网地址:https://www.swiper.com.cn/
导入最新版本的swiper的js、css文件即使手动滑动了轮播图,过一会儿也还会自动播放
以下为额外增加的js代码

<script>var swiper = new Swiper(".mySwiper", {//小圆点pagination: {el: ".swiper-pagination",},//自动播放autoplay: {delay: 1000,//1秒切换一次},//键盘点击轮播图keyboard: {enabled: true,onlyInViewport: true,}});</script>

14. 定时器-延迟函数

语法:
setTimeout(回调函数,等待的毫秒数)
setTimeout 仅仅只执行一次,所以可以理解为就是把一段代码延迟执行, 平时省略window
清除延时函数:

let timer = setTimeout(回调函数,等待的毫秒数)
clearTimeout(timer)

注意点:

  • 延时器需要等待,所以后面的代码先执行
  • 每一次调用延时器都会产生一个新的延时器

15. 两种定时器对比:执行的次数

  • 延时函数(setTimeout): 执行一次
  • 间歇函数(setInterval):每隔一段时间就执行一次,除非手动清除

16. JS 执行机制

同步任务和异步任务的本质区别

同步任务:同步任务都在主线程上执行,形成一个执行栈。(前一个任务结束后再执行后一个任务)
异步任务:JS 的异步是通过回调函数实现的。(在做这件事的同时,你还可以去处理其他事情。)
一般而言,异步任务有以下三种类型:
1、普通事件,如 click、resize 等
2、资源加载,如 load、error 等
3、定时器,包括 setInterval、setTimeout 等
异步任务相关添加到任务队列中(任务队列也称为消息队列)。

1. 先执行执行栈中的同步任务。
2. 异步任务放入任务队列中。
3. 一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行
什么叫事件循环?(面试)

由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环event loop
同步任务放在执行栈里 异步任务放在浏览器里 异步任务执行完放在任务队列里 执行栈执行完了 回到任务队列里取。

17. location对象

常用属性和方法:

  • href 属性获取完整的 URL 地址,对其赋值时用于地址的跳转重点
console.log(location.href)
// 1. href 经常用href 利用js的方法去跳转页面
location.href = 'http://www.baidu.com'
  • search 属性获取地址中携带的参数,符号 ?后面部分
    console.log(location.search)
  • hash 属性获取地址中的啥希值,符号 # 后面部分
    后期vue路由的铺垫,经常用于不刷新页面,显示不同页面,比如 网易云音乐
    console.log(location.hash)
  • reload 方法用来刷新当前页面,传入参数 true 时表示强制刷新
<button class="reload">刷新</button>
<script>const reload = document.querySelector('.reload')reload.addEventListener('click', function () {// f5 刷新页面// location.reload()// 强制刷新  ctrl+f5location.reload(true)})
</script>

18. navigator对象(了解)

navigator的数据类型是对象,该对象下记录了浏览器自身的相关信息
通过 userAgent 检测浏览器的版本及平台:

// 检测 userAgent(浏览器信息)
!(function () {
const userAgent = navigator.userAgent
// 验证是否为Android或iPhone
const android = userAgent.match(/(Android);?[\s\/]+([\d.]+)?/)
const iphone = userAgent.match(/(iPhone\sOS)\s([\d_]+)/)
// 如果是Android或iPhone,则跳转至移动站点
if (android || iphone) {
location.href = 'http://m.itcast.cn' }
})()

19. history对象

history 的数据类型是对象,主要管理历史记录。该对象与浏览器地址栏的操作相对应,如前进、后退、历史记录等
history

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

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

相关文章

文心一言 VS 讯飞星火 VS chatgpt (237)-- 算法导论17.3 3题

三、考虑一个包含 n 个元素的普通二叉最小堆数据结构&#xff0c;它支持 INSERT 和 EXTRACT-MIN 操作、最坏情况时间均为 O(lg n) 。给出一个势数 Φ &#xff0c;使得 INSERT 操作的摊还代价为 O(lg n) &#xff0c;而 EXTRACT-MIN 操作的摊还代价为 O(1) &#xff0c;证明它是…

【电子通识】吸锡带/线的作用和替代方法

吸锡带简介 吸锡带(或称吸锡线、脱焊织物)是手工焊接的好助手,手焊或维修时吸锡带能够去除电路板上多余焊锡,减少了电子产品的返工和修理的时间,降低了烙铁对电路板造成过热损伤的危险,因此是一个既廉价又有效的物品。 市面上卖的最多的的吸锡带类型如下所示: 吸锡带的选型…

【Qt编译】ARM环境 Qt5.14.2-QtWebEngine库编译 (完整版)

ARM 编译Qt5.14.2源码 1.下载源码 下载Qt5.14.2源代码&#xff08;可根据自己的需求下载不同版本&#xff09; 下载网站&#xff1a;https://download.qt.io/new_archive/qt/5.14/5.14.2/single/ 2.相关依赖(如果需要的话) 先参考官方文档的需求进行安装&#xff1a; 官方…

LangChain实战:从原型到生产,动手打造 LLM 应用 书籍推荐!

今天给大家推荐一本大模型方面的书籍<LangChain实战&#xff1a;从原型到生产&#xff0c;动手打造 LLM 应用>&#xff0c;本书将介绍大语言模型的基础理论包括语言模型、分布式模型训练以及强化学习&#xff0c;并以Deepspeed-Chat框架为例介绍实现大语言模型和类ChatGP…

UE4_导入内容_FBX导入选项说明

虽然将FBX文件导入到虚幻引擎4是一个相对简单的过程&#xff0c;但是有相当多的选项可以调整导入的资产。本文档将介绍这些选项。 当你使用FBX管道通过 内容浏览器 导入内容时&#xff0c;将出现 FBX导入选项&#xff08;FBX Import Options&#xff09; 对话框。导入器将自动…

2024第十五届蓝桥杯 C/C++ B组 参赛经历分享(以及部分题解)

前言 emmmmmm&#xff0c;dp杯居然不考dp了&#xff0c;蓝桥一直没怎么出过的高精度居然也考了&#xff08;当时居然因为没太复习那块知识直接模拟混分了&#xff09;&#xff0c;题量也改了&#xff0c;总的来说反而简单了&#xff1f;。。。还好天津竞赛弱省&#xff0c;但愿…

python实现简单的车道线检测

描述 python实现简单的车道线检测&#xff0c;本文章将介绍两种简单的方法 颜色阈值区域掩模canny边缘检测霍夫变换 这两种方法都能实现简单的车道线检测demo&#xff0c;注意仅仅是demo 下面的图片是用到的测试图片 方法1&#xff1a;颜色阈值&#xff08;Color Selection…

资深亚马逊运营实战技巧:跨境电商6大选品法

1、工具选品法 比如店雷达&#xff0c; 通过大数据分析工具选出来利基产品或者通过工具选出来利基的市场&#xff0c;然后再通过分析市场来得到产品。 以女装为例&#xff0c;通过大数据分析&#xff0c;全方位对市场需求、款式、质量等进行多维度判断&#xff0c;其中SKU销量…

改进 Elastic Agent 和 Beats 中的事件队列

作者&#xff1a;Fae Charlton, Alexandros Sapranidis 内部改进如何降低 Elastic 8.13 中的内存使用。 在 8.12 版本中&#xff0c;我们引入了性能预设 —— 一种更简单的方法&#xff0c;用于调整 Elastic Agent 和 Beats 以适应各种场景。这提高了常见环境的性能&#xff0…

OpenHarmony实战开发-如何使用Web预渲染实现功能介绍。

介绍 为了便于大家在使用本案例集时能够更详细的了解各个案例&#xff0c;本案例基于Web预渲染实现了案例介绍功能&#xff0c;即应用右下角的问号icon。 效果图预览 使用说明 因为直接加载的线上README&#xff0c;因此本功能需联网使用点击icon&#xff0c;即会弹出对应案…

爬虫的目的是做什么

通过网站域名获取HTML数据解析数据&#xff0c;获取想要的信息存储爬取的信息如果有必要&#xff0c;移动到另一个网页重复过程 这本书上的代码的网址是 &#xff1a; GitHub - REMitchell/python-scraping: Code samples from the book Web Scraping with Python http://shop.…

风力发电场集中监控系统解决方案

风力发电场集中监控系统解决方案 作为清洁能源之一&#xff0c;风力发电场近几年装机容量快速增长。8月17日&#xff0c;国家能源局发布1-7月份全国电力工业统计数据。截至7月底&#xff0c;全国累计发电装机容量约27.4亿千瓦&#xff0c;同比增长11.5%。其中&#xff0c;太阳能…

火绒安全的用法

火绒安全软件是一款综合性的电脑安全防护工具&#xff0c;提供了病毒查杀、系统防护、网络安全等多种功能&#xff0c;以帮助用户保护电脑免受恶意软件和网络威胁的侵害。以下是火绒安全软件的一些主要用法&#xff1a; 病毒查杀&#xff1a;火绒安全软件提供全盘查杀、快速查杀…

[STM32+HAL]DengFOC移植之闭环位置控制

一、源码来源 DengFOC官方文档 二、HAL库配置 1、开启硬件IIC低速模式 低速更稳定 2、PWM波开启 三、keil填写代码 1、AS5600读取编码器数值 #include "AS5600.h" #include "math.h"float angle_prev0; int full_rotations0; // full rotation trac…

选择电源自动化测试系统,要考虑哪些因素?

随着科技的发展以及市场需求的变化&#xff0c;手动测试以及传统自动化测试不足日益明显&#xff0c;已无法满足当前的电源测试需求&#xff0c;因此&#xff0c;选择全新的自动化测试系统成为必然趋势。那么&#xff0c;要如何选择可靠、高效的电源自动化测试系统呢&#xff1…

计算机网络——网络地址转换(NAT)技术

目录 前言 前篇 引言 SNAT&#xff08;Source Network Address Translation&#xff09;源网络地址转换 SNAT流程 确定性标记 DNAT&#xff08;Destination Network Address Translation&#xff0c;目标网络地址转换&#xff09; NAT技术重要性 前言 本博客是博主用于…

15 Python进阶: random和pyecharts

Python random 模块主要用于生成随机数。 random 模块实现了各种分布的伪随机数生成器。 要使用 random 函数必须先导入&#xff1a; import randompython random 模块的一般用法 Python中的random模块提供了生成伪随机数的功能&#xff0c;可以用于模拟、游戏开发、密码学…

【Spring Boot 源码学习】SpringApplication 的 run 方法核心流程介绍

《Spring Boot 源码学习系列》 SpringApplication 的 run 方法核心流程介绍 一、引言二、往期内容三、主要内容3.1 run 方法源码初识3.2 引导上下文 BootstrapContext3.3 系统属性【java.awt.headless】3.4 早期启动阶段3.5 准备和配置应用环境3.6 打印 Banner 信息3.7 新建应用…

Blender表面细分的操作

在使用Blender的过程中,刚开始创建的模型,都会比较少面,这样操作起来比较流畅,减少电脑的计算量,当设计快要完成时,就会增加表面细分,这样更加圆滑,看起来更加顺眼。 比如创建一个猴头,它会默认显示如下: 从上图可以看到,有一些表面会比较大,棱角很多。 这时候你…

win11如何重新安装应用商店,怎么重装应用商店

win11系统内置了应用商店&#xff0c;相当于手机的应用商城&#xff0c;用户们想要下载软件时&#xff0c;就会前往应用商店搜索下载。如果我们因为误操作&#xff0c;删除了win11应用商店&#xff0c;或者是应用商店出现闪退、卡顿等问题&#xff0c;这个时候&#xff0c;最好…