图片懒加载

爬取图片懒加载页面 文章目录1.什么是懒加载2.为什么要使用懒加载3.如何爬取图片懒加载的网站3.1 分析爬虫页面, 指定爬取流程3.2 编写爬虫的代码4.总结 在带大家爬取图片懒加载页面之前, 先为大家介绍一下什么是图片懒加载, 懒加载有什么用, 在理解原理后再去爬取, 相信就会简单多了。 1.什么是懒加载 在一些网站或者app上会看到 鼠标或手势过快,而图片没有加载出来由色块或其他图片代替的情况,当图片出现在我们... 阅读详情

图片懒加载就是当页面被请求时,只加载可视区域的图片,其它部分的图片则不加载,只有这些图片出现在可视区域时才会动态加载这些图片,从而节约了网络带宽和提高了初次加载的速度。如果一个首页的图片很多的话,用图片懒加载会让其打开时间大大缩短,提高用户体验。

说白了,其实很简单,就是通过js动态给每个块添加个带有背景图片的类。

html代码片段:

<div id="j_lazy_part">
	<div id="no2" class=""></div>
	<div id="no3" class=""></div>
	<div id="no4" class=""></div>
	<div id="no5" class=""></div>
	<div id="no6" class=""></div>
	<div id="no7" class=""></div>
	<div id="no8" class=""></div>
	<div id="no9" class=""></div>
	<div id="no10" class=""></div>
	<div id="no11" class=""></div>
	<div id="no12" class=""></div>
</div>

css代码片段:

使用background可以在后设置定位center 0,来实现图片居中且不压缩;而给每个块设置height可以是浏览器为每个块预留高度来提高速度。

#no2{ height: 679px; width: 100%; background-color: AEAEA;}
.j-lazy-2{ background:  url("/fenxiao/image/index/newversion/no2.png") no-repeat center 0;}
#no3{ height: 986px; width: 100%; background-color: #fff;}
.j-lazy-3{ background: url("/fenxiao/image/index/newversion/no3.png") no-repeat center 0;}
#no4{ height: 1009px; width: 100%; background-color: #DFDFDF;}
.j-lazy-4{ background: url("/fenxiao/image/index/newversion/no4.png") no-repeat center 0;}
#no5{ height: 1010px; width: 100%; background-color: #fff;}
.j-lazy-5{ background: url("/fenxiao/image/index/newversion/no5.png") no-repeat center 0;}
#no6{ height: 1054px; width: 100%; background-color: #EAEAEA;}
.j-lazy-6{ background: url("/fenxiao/image/index/newversion/no6.png") no-repeat center 0;}
#no7{ height: 898px; width: 100%; background-color: #392E26;}
.j-lazy-7{ background: url("/fenxiao/image/index/newversion/no7.png") no-repeat center 0;}
#no8{ height: 898px; width: 100%; background-color: #EAEAEA;}
.j-lazy-8{ background: url("/fenxiao/image/index/newversion/no8.png") no-repeat center 0;}
#no9{ height: 1068px; width: 100%; background-color: #fff;}
.j-lazy-9{ background: url("/fenxiao/image/index/newversion/no9.png") no-repeat center 0;}
#no10{ height: 976px; width: 100%; background-color: #EAEAEA;}
.j-lazy-10{ background: url("/fenxiao/image/index/newversion/no10.png") no-repeat center 0;}
#no11{ height: 962px; width: 100%; background-color: #fff;}
.j-lazy-11{ background: url("/fenxiao/image/index/newversion/no11.png") no-repeat center 0;}
#no12{ height: 976px; width: 100%; background-color: #D4DBDE;}
.j-lazy-12{ background: url("/fenxiao/image/index/newversion/no12.png") no-repeat center 0;}
js代码片段:
//图片懒加载
function setImg(index){
	var odiv = $("#j_lazy_part").children("div");
	odiv[index].className= "j-lazy-"+(index+2);
}
//获得对象距离页面顶端的距离的
function getH(obj){
	var h = 0;
	while(obj){
		h += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return h;
}
//当网页的滚动条滚动时要时时判断
window.onscroll = function(){
	var odiv = $("#j_lazy_part").children("div");
	for (var i = 0, l = odiv.length; i < l; i++) {
		var osee = odiv[i];  
	    //检查osee是否在可视区域  
	    var t = document.documentElement.clientHeight + (document.documentElement.scrollTop || document.body.scrollTop);//这个t是计算浏览器可视高度加上下拉的距离
	    var h = getH(osee);  
	    if (h < t) {  //这个h是固定的,当小于t时就意味着这个obj在可视区域里
	        setTimeout("setImg(" + i + ")", 100);  
	    } 
	}
};

补充:

后来测试的时候突然发现个问题,当打开页面不动滚动条的时候,页面无法显示,一查才知道原来onscroll 事件在元素滚动条在滚动时才触发,当你第一次打开页面或者刷新的时候,滚动条根本没动,所以没有执行。解决方法也很简单:加入ready预加载事件,在打开页面时就执行一次。

var lazy_load_img = function(){
	var odiv = $("#j_lazy_part").children("div");
	for (var i = 0, l = odiv.length; i < l; i++) {
		var osee = odiv[i];  
	    //检查osee是否在可视区域  
	    var t = document.documentElement.clientHeight + (document.documentElement.scrollTop || document.body.scrollTop);  
	    var h = getH(osee);  
	    if (h < t) {  
	        setTimeout("setImg(" + i + ")", 100);
	    } 
	}
};
$(window).scroll(function(){
	lazy_load_img();
});

补充:

过几天测试又发现个问题,如果在懒加载区域的上方有个可以随浏览器伸缩的元素,例如banner图片,当其缩小时下面的元素就会上移,但是getH获得的高度还是他没伸缩前的高度,也就意味着他不会显示。解决方法是:设置一个setTimeout刷新一下即可。

$(document).ready(function(){
    lazy_load_img();
    setTimeout("lazy_load_img()",200);
});

React图片懒加载 React图片懒加载 话不多说了,创建一个LazyLoad.js的React组件,然后将下面的代码复制过去: import React from 'react' // import './lazyload.css' // threshold const threshold = [0.01] class LazyLoad extends React.Component{ construc... 阅读详情

相关推荐

图片的懒加载

图片懒加载也就是图片的延迟加载,实现图片的懒加载有两个思路: 1、事件监听 2、IntersectionObserver

qq_45265059的博客 3500

实现图片懒加载的5种方式

offsetTop(图像距离顶部的高度)-scrollTop(页面被卷去的高度)

maidu_xbd的博客 9763

SIMULIA-Simpack 2022x新功能介绍

增加库伦摩擦类型力元95 Coulomb Friction增加了3种新的摩擦方向类型用于模拟平面、圆柱和球面摩擦。针对平移和旋转摩擦改进了滑动到粘着过渡阶段的检测,增加一个参数定义两种不同的滑移-粘滞过渡模式,即“Unloaded stick stiffness”和“Preload stick with last slip”。新增加124'Applied Load’力元允许用户将力或扭矩作为恒定值或通过激励元素施加到To Marker点上。该力元建模操作方便,效率高。支持线性柔性体装配。

crystalzhan的博客 1047

图片懒加载的四种实现方案

懒加载:延迟加载,对于一个很长的页面,优先加载可视区域的内容,其他部分等进入可视区域时再加载。

前端工程师 · Vue 生态深耕者,专注多端与工程化 9931

latex使用overleaf插入多行图片

对于一般的latex模板,可以使用下面方式: (1)现在模板最前面的加入包 \usepackage{graphicx} \usepackage{subfigure} (2) 使用下面代码插入图片 \begin{figure}[htbp] \centering \subfigure[pic1.]{ \includegraphics[width=5.5cm]{pic1.png} } \quad \subfigure[pic2.]{ \includegraphics[width=5.5cm]{pic

Look Forward To 1万+

【ESP32实战】SPI驱动ILI9341屏幕:从基础绘图到汉字显示

本文详细介绍了如何使用ESP32通过SPI驱动ILI9341屏幕,从基础连接、SPI初始化到实现基础绘图、数字显示及汉字显示的全过程。文章包含实用的代码示例和优化技巧,帮助开发者快速掌握屏幕驱动技术,提升显示性能。特别针对常见问题如花屏、刷新率等提供了解决方案。

weixin_29164091的博客 621

什么事图片懒加载?如何实现图片懒加载?

图片懒加载是指在网页中,当用户滚动页面时才加载图片的一种技术。相对于传统的图片加载方式,懒加载可以减少初始页面的加载时间,提高网站的响应速度。尤其对于移动设备和网络条件较差的用户,懒加载可以显著地提高用户的体验。

tyxjolin的专栏 3980

C#实战:如何用winmm.dll打造毫秒级高精度定时器(附完整代码)

本文详细介绍了在C#中利用winmm.dll实现毫秒级高精度定时器的完整方案。针对.NET内置定时器精度不足的问题,通过调用timeSetEvent等原生API,提供了超越系统时钟中断周期的精准定时能力。文章包含核心原理剖析、完整的封装类代码以及音视频处理、游戏开发等场景下的实战应用与性能调优指南。

ujm5678901的博客 690

图片懒加载的原理--三种方法实现

3.设置img的默认src为一张1px*1px,很小很小的gif透明图片(所有的img都用这一张,只会发送一次请求),之所以需要是透明的,是需要透出通过background设置的背景图(一张loading.png,就是一个转圈圈的背景效果图)目前流行的做法是滚动动态加载,也就是懒加载,显示在屏幕之外的图片默认不加载,随着页面的滚动,图片进入了显示的范围,则触发图片的加载显示。5.等到图片进入视口后,利用js提取data-url的真实图片地址赋值给src属性,就会去发送请求加载图片,真正实现了按需加载。

weixin_43872282的博客 4960

Cartographer实现双雷达建图

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。

Studying…… 1261

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

zheaa的博客 4828

图片懒加载的原理和实现

一,前置知识 1,为什么要图片懒加载 懒加载是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而不是一次性加载所有图片,当需要显示时,再发送图片请求,避免打开网页时加载过多资源。 当一个网站的加载图片过多时就需要懒加载的协助,页面图片多时,在首次载入时一次性加载会耗费时间长,使用懒加载可以使页面加载速度快、减轻服务器的压力、节省流量。 如下图: 随着滚轮滚动,底部的图片会被不断地加载,从而显示在页面上,也就是说懒加载其实就是按需加载,当页面需要显示图片的时候才进行加载,否则不加载

weixin_42349568的博客 1万+

Claude Code 任务编排 头脑风暴与 疯狂拷问:Superpowers vs Grill-me 硬核对比与工程落地

Superpowers和Grill-me是AI编程中的互补工具:Superpowers提供工程化开发流程(从需求梳理到代码审查),确保规范执行;Grill-me通过持续追问帮助厘清需求,避免方向偏差。两者结合形成"构思-拷问-执行"工作流,前者负责方案生成与落地,后者专注需求审查。根据场景选择:个人项目可用Grill-me快速澄清需求,企业项目推荐Superpowers全流程,复杂开发则建议组合使用。它们分别解决"如何落地"和"是否对齐"的问题,共

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 325

懒加载<图片懒加载>

监听 scroll、resize 等事件,当事件触发时,获取图片元素的位置信息、滚动高度及视口高度,计算出当前图片元素是否出现在视口内,如果出现了则加载图片。当页面滚动时,vue-lazyload 会检测元素是否进入可视区域,如果是,则替换元素的 src 或者 style 属性,从而实现懒加载。在比较长的网页或应用中,如果图片很多,所有的图片都被加载出来,而用户只能看到可视窗口的那一部分图片数据,这样就浪费了性能。:所有浏览器都兼容,可以比较灵活,自定义触发加载的时机,可以结合图片加载预览提升用户体验。

Cshaosun的博客 1364

【机器视觉】基于深度学习的托盘PCB识别与计数(有无、正反)

工业机器视觉是指在制造业和工业环境中使用计算机视觉技术来执行检测、测量、识别和控制任务。它结合了硬件(如相机、镜头、光源)与软件(图像处理算法)来自动完成传统上需要人工视觉的任务,从而提高生产效率、产品质量以及工作安全性。工业机器视觉系统通常具有高精度、高速度和高可靠性,能够适应恶劣的工作环境。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

uniapp 图片懒加载,图片懒加载

/ 滚动区域,不传默认是页面。// 错误显示的图片。

qq_40591925的博客 2678

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java对图片懒加载_图片懒加载

一、前言为啥要对图片使用懒加载?我们首先来聊聊这个问题,对于页面来说架子啊速度影响着最大的就是图片,一张普通的图片可以达到4-5M的大小,而代码压缩也就只有几十KB。当页面图片过多的时候,页面加载速度很缓慢,一个页面加载几秒没有完成,用户体验不好,会丧失很多用户的。所以对于图片过多的页面,可以为了加速页面加载速度,很多时候我们需要将页面内未出现的可视区域内的图片先不加载,等到滚动到可视区的时候录再...

weixin_32605973的博客 699

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

图片懒加载的原理及实现

为什么要使用图片懒加载呢?什么是图片懒加载呢? 1. 原理 图片懒加载是前端页面优化的一种方式,在页面中有很多图片的时候,图片加载就需要很多时间,很耗费服务器性能,不仅影响渲染速度还会浪费带宽,为了解决这个问题,提高用户体验,所以就出现了懒加载这种方式来减轻服务器的压力,优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能。 2. 实现 思路:在图片没有进入可视区域时,先不给的src赋值,这样浏览器就不会发送请求了,等到图片进入可视区域再给src赋值。图片的真实地址需要存储在data-src

xiaomao_wxj的博客 7036

图片懒加载的几种方法

在一些图片比较多的网站会用到 图片懒加载 技术,这项技术可以延迟加载图像,只当图片出现在我们看到的视图中才加载,它的好处是大大提高用户体验,节省不必要的资源浪费以及网站的性能提升等。下面介绍几种图片懒加载的方法,分别是监听 scroll、resize 事件,使用 Intersection Observer API 以及 Chrome70 自带的懒加载设置。任何技术都是为解决问题服务的。在开始之前,...

LightLinV的博客 2399

Vue图片懒加载

1、问题 在vue项目中,如果图片是从服务器端加载到页面上,图片较大的时候,就会存在一部分一部分加载的情况,会显示非常卡顿,影响体验。 2、实现 (1)、图片懒加载 首先将图片的src链接设为一张我们已经准备好的图片(比如类似加载中的图片),并将其真正的图片地址存储在img标签的自定义属性中。当js监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到src属性中,达到懒加载的效果。这样就可以缓解服务器压力,并且提高用户体验。 (2)、安装vue-lazyload npm i vue-lazyload

小绵杨 4071

通过图片懒加载进行优化

懒加载定义: 延迟加载图片或符合某些条件时才加载某些图片,通常用于图片比较多的网页。可以减少请求数或者延迟请求数,优化性能。 呈现形式:​​​​​​​ 延时加载,使用setTimeout或setInterval进行加载延迟,如果用户在加载前就离开,自然就不会进行加载。 条件加载,符合某些条件或者触发了某些条件才开始异步加载。 可视区域加载,仅仅加载用户可以看到的区域,这个主要监控滚动条来...

Moon Star 2000

路由懒加载和图片懒加载

懒加载 在项目中为了优化加载速度和节约资源,会使用懒加载这一概念。 下面例子是基于vue框架实现的懒加载。 路由懒加载 vue项目实现路由按需加载(路由懒加载)的3种方式 - 简书 (jianshu.com) 路由懒加载 | Vue Router (vuejs.org) 常用方法:es规范的import() 注意:webpackChunkName可以把某个路由下的所有组件都打包在同个异步块 (chunk) 中 图片懒加载 懒加载原理是什么 先将 img 标签中的src链接设为同一张图片(空白图片),将其真正

weixin_42713144的博客 925
上一篇: eclipse常用快捷键
下一篇: 回到顶部按钮
水中熊
博客等级 码龄12年 17粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值