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

手写图片懒加载

参考来自前辈 Aidan路修远i 的文章面试官:请你手写一下!懒加载 - 掘金 (juejin.cn)

Hello.vue 

<template><div><!-- src里面为空,data-original里面写图片真正的url(此处省略) --><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original="">    <img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""><img src="" data-original=""></div>
</template><script>export default {name: 'Hello',methods: {//懒加载函数lazyLoad(){// 拿到所有的img元素let imgs = document.querySelectorAll('img[data-original]');imgs.forEach(el=>{// getBoundingClientRect()专门获取容器的几何信息let rect = el.getBoundingClientRect()// 拿到可视觉区域的高度let viewHeight = window.innerHeight;if(rect.top<viewHeight){// img元素自带一个构造函数,可以创建一个图片对象let image = new Image()// js专有写法dataset.original; = data-originalimage.src = el.dataset.original;//监听图片加载完成后,再给src赋值// image.onload = function(){//     el.src = image.src// }el.src = image.src// 图片加载完毕就移除属性el.removeAttribute('data-original')}})}},mounted() {// 添加滚动事件监听器document.addEventListener('scroll', this.lazyLoad)},beforeDestroy() {//移除滚动事件监听器document.removeEventListener('scroll', this.lazyLoad)}}
</script><style scoped>img {display: block;height: 300px;width: 300px;margin-top: 50px;}
</style>

App.vue

<template><div id="app"><Hello /></div>
</template><script>
import Hello from './components/Hello.vue'export default {name: 'App',components: {Hello},}
</script><style>
</style>

相关文章:

手写图片懒加载

参考来自前辈 Aidan路修远i 的文章面试官&#xff1a;请你手写一下&#xff01;懒加载 - 掘金 (juejin.cn) Hello.vue <template><div><!-- src里面为空&#xff0c;data-original里面写图片真正的url(此处省略) --><img src"" data-origina…...

大型语言模型(LLMs)的后门攻击和防御技术

大型语言模型&#xff08;LLMs&#xff09;通过训练在大量文本语料库上&#xff0c;展示了在多种自然语言处理&#xff08;NLP&#xff09;应用中取得最先进性能的能力。与基础语言模型相比&#xff0c;LLMs在少样本学习和零样本学习场景中取得了显著的性能提升&#xff0c;这得…...

力扣2594.修车的最少时间

力扣2594.修车的最少时间 二分答案 class Solution {public:long long repairCars(vector<int>& ranks, int cars) {ranges::sort(ranks);auto check [&](long long x) -> bool{long long res 0;for(auto v : ranks){long long k sqrt(x/v);res k;if(r…...

攻防演练之-成功的钓鱼邮件溯源

书接上文&#xff0c;《网络安全攻防演练风云》专栏之攻防演练之-网络安全产品大巡礼二&#xff0c;这里。 演练第一天并没有太大的波澜&#xff0c;白天的时间过得很快。夜色降临&#xff0c;攻防演练中心内的灯光依旧明亮。对于网络安全团队来说&#xff0c;夜晚和白天并没有…...

Gi标签管理

文章目录 前言理解标签创建标签操作标签总结 前言 理解标签 标签&#xff0c;可以理解为对某次commit的一次标识&#xff0c;相当于起起了一个别名。 例如&#xff0c;在项目发布某个版本时候&#xff0c;针对最后一次commit起一个v1.0这样的标签来标识里程碑的意义。 这有什…...

2024福建等保测评公司有哪些?分别叫做什么名字?

2024福建等保测评公司有哪些&#xff1f;分别叫做什么名字&#xff1f; 【回答】&#xff1a;2024年具有资质的福建等保测评公司有6家&#xff0c;其名称以及地址如下&#xff1a; 1、福建省网络与信息安全测评中心&#xff0c;福州市鼓楼区东街8号利达大厦A座8层&#xff1b…...

王先宏老师厉害了,活页笔记版古琴曲谱拆箱图

王先宏老师走心了&#xff0c;活页笔记版古琴曲谱拆箱图&#xff0c;简直是史上最好的古琴学习利器&#xff01;送的防滑垫还带铝合金夹层的&#xff0c;养弦膏都是市面上没有的的。 这些古琴谱上的笔记就是老师课堂上用的&#xff0c;直接拿来就可以跟着弹&#xff0c;不用您…...

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台

TalkingData 是一家专注于提供数据统计和分析解决方案的独立第三方数据智能服务平台。通过搜索结果&#xff0c;我们可以了解到 TalkingData 的一些关键特性和市场情况&#xff0c;并将其与同类型产品进行比较。 TalkingData 产品特性 数据统计与分析&#xff1a;提供专业的数…...

Springboot的小型超市商品展销系统-计算机毕业设计源码01635

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…...

UV胶开裂主要因素有哪些?如何避免?

UV胶开裂主要因素有哪些&#xff1f;如何避免&#xff1f; UV胶开裂的原因可能包括多个方面&#xff1a; 固化不足&#xff1a;UV胶的固化需要足够的紫外线照射。如果照射时间不够&#xff0c;或者紫外线光源的强度不足&#xff0c;胶水可能没有完全固化&#xff0c;从而导致开…...

LogicFlow 学习笔记——3. LogicFlow 基础 节点 Node

节点 Node LogicFlow 内置了一些基础节点&#xff0c;开发者在实际应用场景中&#xff0c;可以基于这些基础节点&#xff0c;定义符合自己业务逻辑的节点。 认识基础节点 LogicFlow是基于svg做的流程图编辑框架&#xff0c;所以我们的节点和连线都是svg基本形状&#xff0c;…...

VMware清理拖拽缓存

磁盘空间越用越小&#xff0c;如何快速解决磁盘空间的问题&#xff0c;甩掉烦恼 安装VM tools之后可以通过拖拽的方式把文件拉入虚拟机之中。但每一次拖拽&#xff0c;其实都是现在cache文件夹里面生成一个同样的文件&#xff0c;并使用cp拷贝的方式将其拷贝到拖拽放置的目录中…...

跨语言系统中的功能通信:Rust、Java、Go和C++的最佳实践

在现代软件开发中&#xff0c;使用多种编程语言构建复杂系统已成为一种常见的做法。每种编程语言都有其独特的优势和适用场景&#xff0c;这使得在同一个系统中使用多种语言变得合理且高效。然而&#xff0c;这也带来了一个重要的挑战&#xff1a;如何在这些不同语言之间实现高…...

4. Revit API UI 之 Ribbon(界面)

4. Revit API UI 之 Ribbon&#xff08;界面&#xff09; 第二篇中&#xff0c;我们提到了IExternalApplication&#xff0c;该接口需要实现两个方法&#xff1a;Revit启动时调用的OnStartup 方法&#xff0c;和Revit关闭时调研的OnShutdown 方法。文中还给了个例子&#xff0…...

js数组方法

改变原始数组返回一个新数组添加元素push&#xff0c;unshiftconcat&#xff0c;[…arr] 展开语法删除元素pop&#xff0c;shift&#xff0c;splicefilter&#xff0c;slice替换元素splice&#xff0c;arr[i] … 赋值map排序reverse&#xff0c;sort先将数组复制一份...

PyTorch -- 最常见损失函数 LOSS 的选择

损失函数&#xff1a;度量模型的预测结果与真实值之间的差异&#xff1b;通过最小化 loss -> 最大化模型表现代码实现框架&#xff1a;设有 模型预测值 f (x), 真实值 y 方法一&#xff1a; 步骤 1. criterion torch.nn.某个Loss()&#xff1b;步骤 2. loss criterion(f(x…...

Prometheus 监控系统

一、Prometheus概述 是一个开源的服务监控系统和时序数据库&#xff0c;其提供了通用的数据模型和快捷数据采集、存储和査询接口。它的核心组件. 1.1 Prometheus server 会定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据&#xff0c;新拉取到的数据会…...

Spring Boot中使用logback出现LOG_PATH_IS_UNDEFINED文件夹

1.首先查看&#xff0c;application.properties 文件是否按格式编写 logging.pathmylogs logging.configclasspath:logback-spring.xml2.查看 logback-spring.xml <springProperty scope"context" name"LOG_HOME" source"logging.path"/> …...

代码随想录——组合总数Ⅲ(Leetcode216)

题目链接 回溯 class Solution {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> list new ArrayList<Integer>();public List<List<Integer>> combinationSum3(int k, int n) {backtracking(k, …...

Android native层的线程分析(C++),以及堆栈打印调试

文章目录 Android native层的线程分析(C)&#xff0c;多线程实现1.native线程的创建第一部分&#xff1a;android_thread模块第二部分&#xff1a;linux_thread模块 2.测试linux_thread模块3.Android native的Thread类3.1源码分析 4.native层堆栈调试方法 Android native层的线…...

影墨·今颜模型在网络安全教学中的应用:生成网络拓扑与攻击场景示意图

影墨今颜模型在网络安全教学中的应用&#xff1a;生成网络拓扑与攻击场景示意图 网络安全教学一直有个难题&#xff1a;很多概念太抽象了。你跟学生讲“中间人攻击”&#xff0c;讲“DDoS流量”&#xff0c;或者讲“防火墙策略”&#xff0c;他们脑子里可能只有一堆文字&#…...

MongoDB C Driver事务处理:ACID保证与分布式事务最佳实践

MongoDB C# Driver事务处理&#xff1a;ACID保证与分布式事务最佳实践 【免费下载链接】mongo-csharp-driver The Official C# .NET Driver for MongoDB 项目地址: https://gitcode.com/gh_mirrors/mo/mongo-csharp-driver MongoDB C# Driver是MongoDB官方提供的.NET驱动…...

3步解锁全网资源:res-downloader实战手册

3步解锁全网资源&#xff1a;res-downloader实战手册 【免费下载链接】res-downloader 资源下载器、网络资源嗅探&#xff0c;支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https://gitcode.com/GitHub_Tren…...

QWEN-AUDIO应用案例:如何制作一个会讲故事的AI语音玩具

QWEN-AUDIO应用案例&#xff1a;如何制作一个会讲故事的AI语音玩具 1. 项目背景与创意来源 1.1 儿童教育市场的语音需求 在当今儿童教育领域&#xff0c;互动性和趣味性成为产品设计的关键要素。传统的故事机往往只能播放预录制的音频内容&#xff0c;缺乏个性化和互动能力。…...

快速上手FNF PsychEngine:3大核心功能完全指南

快速上手FNF PsychEngine&#xff1a;3大核心功能完全指南 【免费下载链接】FNF-PsychEngine Engine originally used on Mind Games mod 项目地址: https://gitcode.com/gh_mirrors/fn/FNF-PsychEngine FNF PsychEngine是一款专为《周五夜放克》&#xff08;Friday Nig…...

OpenClaw浏览器自动化:Qwen3-32B-Chat实现智能爬虫与数据分析

OpenClaw浏览器自动化&#xff1a;Qwen3-32B-Chat实现智能爬虫与数据分析 1. 为什么需要智能化的浏览器自动化&#xff1f; 上个月我需要收集某个垂直领域的行业报告&#xff0c;手动复制粘贴了十几个网页后&#xff0c;突然意识到&#xff1a;这种重复劳动不正是AI该解决的问…...

YOLOv8+DCNv3实战避坑:从‘RuntimeError: Not implemented on the CPU’到GPU部署成功

1. 环境准备与版本匹配 在开始YOLOv8与DCNv3的集成之前&#xff0c;环境配置是第一个需要跨过的门槛。我遇到过不少开发者在这个阶段就栽了跟头&#xff0c;主要原因就是版本兼容性问题。根据实测经验&#xff0c;这里有几个关键点需要注意&#xff1a; 首先是CUDA版本的选择。…...

保姆级图解:FD-SOI工艺流程中的关键三步(外延生长、应变硅、HKMG)

保姆级图解&#xff1a;FD-SOI工艺流程中的关键三步&#xff08;外延生长、应变硅、HKMG&#xff09; 在智能手机处理器和自动驾驶芯片的制造中&#xff0c;FD-SOI技术正凭借其独特的性能优势成为行业焦点。这项技术通过超薄绝缘层上硅&#xff08;Ultra-Thin Body and Buried…...

OpenClaw+GLM-4.7-Flash自动化写作:3小时生成30篇技术笔记实战

OpenClawGLM-4.7-Flash自动化写作&#xff1a;3小时生成30篇技术笔记实战 1. 为什么需要自动化知识管理 作为一个技术博主&#xff0c;我每天需要消化大量技术文档和论文。过去两年里&#xff0c;我尝试过各种笔记工具——从Notion到Obsidian&#xff0c;从语雀到飞书文档。但…...

SmolVLA效果展示:三视角图像对齐误差对最终动作精度影响分析

SmolVLA效果展示&#xff1a;三视角图像对齐误差对最终动作精度影响分析 1. 项目概述 SmolVLA是一个专门为经济实惠的机器人技术设计的紧凑高效视觉-语言-动作模型。这个模型最大的特点是能够在有限的硬件资源下实现高质量的机器人控制&#xff0c;让更多开发者和研究者能够接…...