图片懒加载

图片懒加载效果图,没有图片时默认展示require(‘@/assets/images/public/acquiesce.png’)

QQ20241219-10330

test.vue 文件

<template><div class="scrollLoading"><img class="img" ref="IMG" v-for="(item, i) in arr" :data-src="item.imgUrl" :src="require('@/assets/images/public/acquiesce.png')" :key="i"></div>
</template><script>
export default {data() {return {subsidiary: this.$FN.elVisible(this.fn, { visible: false, rootMargin: "0px" }),arr: [{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e1aaa3886c7be24076be' },{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e1d2a3886c7be24076c2' },{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e28da3886c7be24076d4' },{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e1aaa3886c7be24076be' },{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e1d2a3886c7be24076c2' },{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e28da3886c7be24076d4' },{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e1aaa3886c7be24076be' },{ imgUrl: 'http://gmi-sz.sunther.com/file/access//6553e1d2a3886c7be24076c2' },],}},mounted() {this.getRef();},methods: {fn(target, data, subsidiary) {console.log(target, data, subsidiary,33)let src = require("@/assets/images/public/acquiesce.png");let index = Math.floor( Math.random()*8) if (target.src)  {src = this.arr[index].imgUrl;target.src = src;}subsidiary.unobserve(target);},getRef() { let refs = this.$refs.IMG; this.subsidiary(refs) },}
}
</script><style lang="less" scoped>
.img {width: 200px;height: 150px;margin: 50px;display: block;
}
</style>

public/index.js

export function elVisible(fn = () => null, config = {}) {// visible = true 元素不可见时也返回事件,否则我只需要元素可见时触发// threshold = 0 监听元素出现交叉就触发 / = 1 元素必须完全出现才触发 / = 0.5 元素出现一半就触发// rootMargin 扩张 向内或向外扩张交叉区域let { visible = false, ...rest } = config;let configs = { threshold: 0, rootMargin: "-50%", ...rest };const observe = entries => {for (const { isIntersecting = false, target = {} } of entries) {// created && created(target);if (visible) {fn && fn(target, isIntersecting)} else {isIntersecting && fn && fn(target, isIntersecting, subsidiary)};};};let subsidiary = new IntersectionObserver(observe, configs);const carryOut = refs => {let fn = item => subsidiary.observe(item.$el || item);let arrFn = () => refs && refs.map(item => subsidiary.observe(item.$el || item));switch (dataType(refs)) {case "HTMLImageElement": fn(refs); break; // 监听一个domcase "HTMLDivElement": fn(refs); break; // 监听一个domcase "Array": arrFn(refs); break; // 监听多个domdefault: return false;};};return carryOut;
};

main.js

import * as FN from '@/public';Vue.prototype.$FN = FN;

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

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

相关文章

Redis存在安全漏洞

Redis是美国Redis公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值&#xff08;Key-Value&#xff09;存储数据库&#xff0c;并提供多种语言的API。 Redis存在安全漏洞。攻击者利用该漏洞使用特制的Lua脚本触发堆栈缓冲区溢出漏洞&#xff0c;从…

黑马Java面试教程_P8_并发编程

系列博客目录 文章目录 系列博客目录前言1.线程的基础知识1.1 线程和进程的区别&#xff1f;难2频3面试文稿 1.2 并行和并发有什么区别&#xff1f; 难1频1面试文稿 1.3 创建线程的四种方式 难2频4面试文稿 1.4 runnable 和 callable 有什么区别 难2频3面试文稿 1.5 线程的 run…

ubuntu22.04 nginx配置下载目录,亲测成功

安装nginx ubuntu最简单&#xff0c;apt安装即可 apt install nginx 配置文件 文件都在目录下 /etc/nginx/添加内容 修改/ etc/nginx/sites-available/default &#xff0c; 注意这里不是nginx.conf&#xff0c;直接修改nginx.conf不奏效 location /downloads { …

【从零开始入门unity游戏开发之——C#篇21】C#面向对象的封装——`this`扩展方法、运算符重载、内部类、`partial` 定义分部类

文章目录 一、this扩展方法1、扩展方法的基本语法2、使用扩展方法3、扩展方法的注意事项5、扩展方法的限制6、总结 二、运算符重载1、C# 运算符重载2、运算符重载的基本语法3. 示例&#xff1a;重载加法运算符 ()4、使用重载的运算符5、支持重载的运算符6、不能重载的运算符7、…

android EditText密码自动填充适配

android上的密码&#xff08;其实不仅仅是密码&#xff0c;可以是用户名也可以是邮箱&#xff09;自动填充&#xff0c;是需要考虑适配的。 官方文档&#xff1a;https://developer.android.com/identity/autofill/autofill-optimize?hlzh-cn 什么是自动填充 手机厂商一般会…

stm32制作CAN适配器5--WinUsb上位机编写

上次我们要stm32制作了一个基于winusb有canfd适配器&#xff0c;今天我们来制作一个上位机程序来进行报文收发。 上位机还是用以前写好的&#xff0c;只是更改下dll文件。 项目链接器&#xff0c;输入&#xff0c;附加依赖项中增加winusb.lib winusb初始化&#xff1a;#incl…

数据库管理系统——数据库设计

摘要&#xff1a;本博客讲解了数据库管理系统中的数据库设计相关内容&#xff0c;包括概念结构设计&#xff1a;E-R模型&#xff0c;逻辑结构设计&#xff1a;E-R模型到关系设计等内容。 目录 一、数据库设计和数据模型 1.1.数据库设计概述 1. 2.数据库结构概述 1.3.数据库…

Pytorch | 从零构建AlexNet对CIFAR10进行分类

Pytorch | 从零构建AlexNet对CIFAR10进行分类 CIFAR10数据集AlexNet网络结构技术创新点性能表现影响和意义 AlexNet结构代码详解结构代码代码详解特征提取层 self.features分类部分self.classifier前向传播forward 训练过程和测试结果代码汇总alexnet.pytrain.pytest.py CIFAR1…

C++ 杨辉三角 - 力扣(LeetCode)

点击链接即可产看题目&#xff1a;118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出…

【JetPack】WorkManager笔记

WorkManager简介&#xff1a; WorkManager 是 Android Jetpack 库中的一个重要组件。它用于处理那些需要在后台可靠执行的任务&#xff0c;这些任务可以是一次性的&#xff0c;也可以是周期性的&#xff0c;甚至是需要满足特定条件才执行的任务。例如&#xff0c;它可以用于在后…

GTID详解

概念和组成 1&#xff0c;全局事务表示&#xff1a;global transaction identifiers 2, GTID和事务一一对应&#xff0c;并且全局唯一 3&#xff0c;一个GTID在一个服务器上只执行一次 4&#xff0c;mysql 5.6.5开始支持 组成 GTID server_uuid:transaction_id 如&#xf…

常耀斌:深度学习和大模型原理与实战(深度好文)

目录 机器学习 深度学习 Transformer大模型架构 人工神经元网络 卷积神经网络 深度学习是革命性的技术成果&#xff0c;有利推动了计算机视觉、自然语言处理、语音识别、强化学习和统计建模的快速发展。 深度学习在计算机视觉领域上&#xff0c;发展突飞猛进&#xff0c;…

vsCode怎么使用vue指令快捷生成代码

1.下载Vetur插件 2.在文件-首选项-配置代码片段中找到vue.json文件 &#xff08;注&#xff1a;旧版本的编辑器路径为文件-首选项-用户片段&#xff09; 3.在打开的配置代码片段弹窗中搜索vue.json&#xff0c;找到并打开 &#xff08;注&#xff1a;如果搜不到的话就按住鼠标…

python学opencv|读取图像(十八)使用cv2.line创造线段

【1】引言 前序已经完成了opencv基础知识的学习&#xff0c;我们已经掌握了处理视频和图像的基本操作。相关文章包括且不限于&#xff1a; python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python(1)使用opencv读取并显示图像;(2)使用opencv对图像进行缩放…

unity webgl部署到iis报错

Unable to parse Build/WebGLOut.framework.js.unityweb! The file is corrupt, or compression was misconfigured? (check Content-Encoding HTTP Response Header on web server) iis报错的 .unityweb application/octet-stream iis中添加 MIME类型 .data applicatio…

【深度学习】零基础介绍循环神经网络(RNN)

RNN介绍 零基础介绍语言处理技术基本介绍分词算法词法分析工具文本分类与聚类情感分析 自然语言处理词向量词向量学习模型1. 神经网络语言模型2. CBOW 和 skip-gram3. 层次化softmax方法4. 负采样方法 RNN介绍RNN的变种&#xff1a;LSTM1. Forget Gate2. Input Gate3. Update M…

Docker Compose 安装 Harbor

我使用的系统是rocky Linux 9 1. 准备环境 确保你的系统已经安装了以下工具&#xff1a; DockerDocker ComposeOpenSSL&#xff08;用于生成证书&#xff09;#如果不需要通过https连接的可以不设置 1.1 安装 Docker 如果尚未安装 Docker&#xff0c;可以参考以下命令安装&…

面试题整理9----谈谈对k8s的理解1

谈谈对k8s的理解 1. Kubernetes 概念 1.1 Kubernetes是什么 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统&#xff0c;其服务、支持和工具的…

【JAVA】JAVA接口公共返回体ResponseData封装

一、JAVA接口公共返回体ResponseData封装&#xff0c;使用泛型的经典 例子 public class ResponseData<T> implements Serializable { /** * */ private static final long serialVersionUID 7098362967623367826L; /** * 响应状态码 */ …

Redis分片集群学习总结

Redis分片集群学习总结 为什么要使用分片集群&#xff1f;分片集群搭建Redis集群怎么写入读取数据呢&#xff1f;集群写入数据和读取数据怎么定位到对应的节点呢&#xff1f;怎么让多个数据写入同一个节点&#xff1f; 故障转移主从集群和分片集群使用场景 为什么要使用分片集群…