母婴网站建设初衷2018做网站 工具

diannao/2026/1/21 3:30:26/文章来源:
母婴网站建设初衷,2018做网站 工具,合肥,网站建设选择本地观察者模式监听判断dom元素是否在可视区域内 本项目是使用vue3的写法。 1.IntersectionObserver IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内#xff0c;而不需要频繁的计算来做这个判断。由于可见#xff08;visible#xff09;的本质是…观察者模式监听判断dom元素是否在可视区域内 本项目是使用vue3的写法。 1.IntersectionObserver IntersectionObserver可以用来自动监听元素是否进入了设备的可视区域之内而不需要频繁的计算来做这个判断。由于可见visible的本质是目标元素与视口产生一个交叉区所以这个 API 叫做交叉观察器 const observer new IntersectionObserver(callback, option);IntersectionObserver 是浏览器原生提供的构造函数接受两个参数 callback可见性发现变化时的回调函数option配置对象可选。 构造函数的返回值是一个观察器实例。实例一共有4个方法 observe开始监听特定元素unobserve停止监听特定元素disconnect关闭监听工作takeRecords返回所有观察目标的对象数组 1.1 observe 方法 该方法需要接收一个target参数值是Element类型用来指定被监听的目标元素 // 获取元素 const target document.getElementById(dom);// 开始观察 io.observe(target);1.2 unobserve 方法 该方法需要接收一个target参数值是Element类型用来指定停止监听的目标元素 // 获取元素 const target document.getElementById(dom);// 停止观察 io.unobserve(target);1.3 disconnect 方法 该方法不需要接收参数用来关闭观察器 // 关闭观察器 io.disconnect();// 页面加载时监听元素 onMounted(() {var demo3 document.querySelector(document.querySelector(dom)) // 获取元素var observer new IntersectionObserver((mutaions){ // 创建IntersectionObserver对象console.log(mutaions[0].isIntersecting)})observer.observe(demo3) // 需要监听的元素 } 1.4 takeRecords 方法 该方法不需要接收参数返回所有被观察的对象返回值是一个数组 // 获取被观察元素 const observerList io.takeRecords();1.5 callback 参数 目标元素的可见性变化时就会调用观察器的回调函数callback。 callback一般会触发两次。一次是目标元素刚刚进入视口另一次是完全离开视口。 const io new IntersectionObserver((changes, observer) {console.log(changes);console.log(observer); });1.6 options threshold: 决定了什么时候触发回调函数。它是一个数组每个成员都是一个门槛值默认为[0]即交叉比例intersectionRatio达到0时触发回调函数。用户可以自定义这个数组。比如[0, 0.25, 0.5, 0.75, 1]就表示当目标元素 0%、25%、50%、75%、100% 可见时会触发回调函数。root: 用于观察的根元素默认是浏览器的视口也可以指定具体元素指定元素的时候用于观察的元素必须是指定元素的子元素rootMargin: 用来扩大或者缩小视窗的的大小使用css的定义方法10px 10px 30px 20px表示top、right、bottom 和 left的值 2. IntersectionObserverEntry 对象 changes数组中的每一项都是一个IntersectionObserverEntry 对象 boundingClientRect目标元素的矩形区域的信息intersectionRatio目标元素的可见比例即intersectionRect占 boundingClientRect的比例完全可见时为1完全不可见时小于等于0intersectionRect目标元素与视口或根元素的交叉区域的信息isIntersecting: 布尔值目标元素与交集观察者的根节点是否相交常用isVisible: 布尔值目标元素是否可见该属性还在试验阶段不建议在生产环境中使用rootBounds根元素的矩形区域的信息getBoundingClientRect()方法的返回值如果没有根元素即直接相对于视口滚动则返回nulltarget被观察的目标元素是一个 DOM 节点对象常用time可见性发生变化的时间是一个高精度时间戳单位为毫秒 3. 是否在可视区域 onMounted(() {var observer new IntersectionObserver((entries) {console.log(111111, entries[0].isIntersecting);dataMap.showMyBox !entries[0].isIntersecting; //返回true代表在页面可视区域false代表不在页面可视区域。});observer.observe(document.querySelector(dom)); } // 页面卸载时可解绑 onBeforeUnmount(() {if (observer) {observer.unobserve(document.querySelector(dom)); //解绑元素observer.disconnect(); //停止监听} }); 4. 图片懒加载 使用 IntersectionObserver 非常容易实现图片懒加载首先需要观察懒加载元素然后等元素进入可视区域后设置图片 src同时还可以结合 IntersectionObserver.rootMargin 实现提前加载图片一般可以设置为 1~2 倍浏览器窗口的视口高度优化用户体验 /*** method lazyLoad* param {NodeList} $imgList 图片元素集合* param {number} preloadHeight 预加载高度*/ export function lazyLoad($imgList, preloadHeight 1000) {const observer new IntersectionObserver((entries) {entries.forEach((entry) {if (entry.isIntersecting) { // 目标元素出现在 root 可视区返回 trueconst $target entry.targetconst src $target.getAttribute(lazyload)if (src) {$target.setAttribute(src, src) // 真正加载图片}observer.unobserve($target) // 解除观察}})}, {rootMargin: 0px 0px ${preloadHeight}px 0px,})Array.prototype.forEach.call($imgList, ($item) {if ($item.getAttribute(src)) return // 过滤已经加载过的图片observer.observe($item) // 开始观察}) }使用方法 // 图片元素设置 lazyload 属性 img lazyload图片链接 alt图片说明// 观察图片元素 lazyLoad(document.querySelectorAll([lazyload]))5. 元素吸顶、吸底 如果页面结构比较简单可以直接使用 css 粘性布局。 IntersectionObserver 实现元素固定思路也很简单首先需要给固定元素包一层父元素父元素指定高度占位防止固定元素吸附时页面抖动然后观察父元素的可视状态变化当父元素即将离开可视区域时改变固定元素的样式。 /*** method fixBanner* param {HTMLElement} $observeEle 观察元素* param {HTMLElement} $fixEle 固定定位元素*/ export function fixBanner($observeEle, $fixEle) {const $ele $fixEleconst observer new IntersectionObserver((entries) {entries.forEach((entry) {if (entry.isIntersecting) {$ele.style.cssText } else {$ele.style.cssText position: fixed; top: 0; left: 0}})}, {threshold: 1, // threshold 设置为 1 表示目标元素完全可见时触发回调函数})observer.observe($observeEle) // 开始观察 } 6. 加载更多 IntersectionObserver 实现加载更多需要在列表后面增加一个尾部元素比如加载更多动画当尾部元素进入可视区域就加载更多数据注意尾部元素一定要一直处于所有列表元素的后面。 提前加载高度不能随意设置如果设置太大会导致尾部元素一直处于可视状态。 function loadMore() {const observer new IntersectionObserver((entries) {const loadingEntry entries[0]if (loadingEntry.isIntersecting) {// 请求数据并插入列表}},{rootMargin: 0px 0px 600px 0px, // 提前加载高度},)observer.observe(document.querySelector(.mod_loading)) // 观察尾部元素 }

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

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

相关文章

蔡家坡网站开发html网页制作步骤

给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。 输入格式: 输入在一行中给出A。 输出格式: 输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔&#…

有没有做catalog的网站大连网站建设找哪家好

题目 幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。 但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候&#xff…

服务器对应的网站开发语言太姥山镇建设的网站

思维导图:https://www.processon.com/view/link/5f0a6983e401fd0c8fffa75b

做网站要懂哪些杭州工程网站建设

前言大家应该都知道,整数包括负数,零,和正数。在Java中,基本类型中byte(8位)、short(16位)、int(32位)、long(64位)属于整数,并且没有无符号数,均是有符号的。对于计算机来说,它只认识二进制&am…

什么网站的地图厦门 网站优化

本节课主要是跟着教程做的,操作的东西放到作业里记录了。 这里主要记录一些视频里讲的非操作性的东西。 RAG外挂知识库?优点是成本低,不用重新训练 RAG的一个整体流程。 涉及了文本相似度匹配,是不是和传统的问答系统&#xff0…

石家庄网站建设外包保定网站推广哪家好

IoC按名称查找共分为三类: 按名称按类型按集合 按名称查找 在Spring Framework中,实时加载和延迟加载是指在容器启动时是否立即实例化bean的不同策略。下面我们将分别介绍这两种加载方式及其应用场景。 tips: 当涉及到懒加载和延时加载时&#xff0…

佛山营销网站建设制作石家庄优化seo

Maven环境搭建及配置 1.下载部署 官方网站下载正式版的Maven文件,打开bin目录,复制路径然后去环境变量中的path下配置环境变量, 如果只有一个用户只需要在上面path配置复制的路径,当然也可以直接在下面配置,下面配置默认给所有用户都配置 设置完成打开控…

dede手机医院网站模板下载辽宁省建设注册中心网站

问答系统需求文档 一、项目概述 本项目旨在开发一个能够上传 PDF 文件,并基于 PDF 内容进行问答互动的系统。用户可以上传 PDF 文件,系统将解析 PDF 内容,并允许用户通过对话框进行问答互动,获取有关 PDF 文件内容的信息。 二、…

可商用的设计网站网页设计网站总结报告怎么写

在一些应用领域,电源模块会在极端环境温度条件下工作。为了确保电源在高低温环境下可以正常运行,满足设备需求,需要对电源模块进行温度循环测试。 温度循环测试是指电源模块经过升温、保温、降温等多次循环试验来检测其在温度变化下的耐热性、…

广州网站制作方法公司做网站怎么做

如何判断exe文件是debug还是release编译生成的结论: 用IDA工具打开exe,然后看Imports里面的依赖库是否有带d或D结尾的,如果有就说明是Debug的 实验:(实验环境 vs2017, IDA工具) (0&…

怎么做网站推广临沂网站建设的基本流程包括什么

很多个人站长和中小企业在做网站的时候,会选择虚拟主机。虚拟主机用的操作系统多为Windows系统,很多人一提到操作系统立马联想到Windows系统。其实除了Windows系统外,还有很多的操作系统。其中Linux系统是其中的佼佼者。 1、操作系统 window…

泰安润泽建设工程有限公司网站做购物网站怎么赚钱

一直都是编译armabi的。没有不论什么问题,这个架构是软件模拟浮点运算的。后来看到NDK文档上说armabi-v7a是针对有硬件处理浮点计算的arm cpu的。 于是就改动配置编译armebai-v7a的so文件。 结果是编译没问题。一执行就是crash掉,Fatal signal 7 (SIGSEG…

做摄影哪个网站12306网站建设投标书

目录 第一章、代码①trim() 方法以及(Arrays.asList(str.split(reg)));②查询字典项 第二章、注解①PropertySource("classpath:coremail.properties") 第三章、小知识①Linux系统中使用$符号表示变量 友情提醒: 先看文章目录,大致了解文章知识点结构&am…

淘宝上的网站建设为什么便宜天猫网站是用什么技术做的

实验需求 拓扑 实验注意点: 先配置双机热备,再来配置安全策略和NAT两台双机热备的防火墙的接口号必须一致如果其中一台防火墙有过配置,最好清空或重启,不然配置会同步失败两台防火墙同步完成后,可以直接在主状态防火墙…

深圳做响应式网站制作上海网站推广网络公司

在进行linux测试时编写脚本是必不可少的。最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本。可以把太多的命令写成一个脚本,这样每次执行一遍 shell文件,就可以省去了敲击键盘的时间。于是在网上搜了一些有…

杭州建设网站设计的公司北京故宫网页设计

<style type"text/css">font-face{font-family:myFont;src:url(/bootstrap-3.3.7-dist/fonts/shishangjianti.ttf);}body{font-family: myFont !important;}</style> .ttf的文件路径根据文件位置定义

如何制作手机版网站厦门网络推广建网站

电脑网页的设计尺寸是多少刚入门的网页设计师可能对电脑网页的设计尺寸大小存在疑问&#xff0c;以下百分网小编整理的电脑网页的设计尺寸&#xff0c;希欢迎阅读!  对大于30W台客户端用户进行测试&#xff0c;得到的测试数据如下(数据来源于网络)&#xff1a;安全分辨率为10…

花钱做网站注意些什么什么是电商行业

背景早在linux操作系统诞生开始&#xff0c;c语言作为linux系统的编程语言主力&#xff0c;它为后续的其他高级编程语言(如c、java)提供了很多语言级的语义和协议规范。数组做为linux操作系统最基本的数据结构之一&#xff0c;便是其中的一项语言级高级特性&#xff0c;深入理解…

青岛做网站的 上市公司windows优化大师是系统软件吗

一、说明 今天&#xff0c;我们将探讨序列到序列 &#xff08;seq2seq&#xff09; 模型的复杂工作原理&#xff0c;特别关注编码器-解码器架构和注意力机制。这些概念是各种 NLP 应用的基础&#xff0c;从机器翻译到问答系统。 这是可以期待的&#xff1a; Seq2Seq模型中的编码…