位置: 编程技术 - 正文

jQuery滚动加载图片实现原理(jquery滚动条滚动到指定位置)

编辑:rootadmin

推荐整理分享jQuery滚动加载图片实现原理(jquery滚动条滚动到指定位置),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jquery滚动事件,jquery图片滚动代码,jq实现图片滚动效果,jquery 滚动加载,jquery无限滚动加载数据,jquery div滚动条,jquery图片滚动代码,jquery 滚动加载,内容如对您有帮助,希望把文章链接给更多的朋友!

本文主要通过以下几方面来说明懒加载技术的原理,个人前端小菜,有错误请多多指出

一、什么是图片滚动加载?

  通俗的讲就是:当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次),只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。

二、为什要使用这个技术?

  比如一个页面中有很多图片,如淘宝、京东首页等等,如果一上来就发送这么多请求,页面加载就会很漫长,如果js文件都放在了文档的底部,恰巧页面的头部又依赖这个js文件,那就不好办了。更为要命的是:一上来就发送百八十个请求,服务器可能就吃不消了(又不是只有一两个人在访问这个页面)。

  因此优点就很明显了:不仅可以减轻服务器的压力,而且可以让加载好的页面更快地呈现在用户面前(用户体验好)。

三、怎么实现?

关键点如下:

1、页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片(也就没有请求咯,也就提高性能咯),一旦通过javascript设置了图片路径,浏览器才会送请求。有点按需分配的意思,你不想看,就不给你看,你想看了就给你看~

  2、如何获取正真的路径,这个简单,现在正真的路径存在元素的“data-url”(这个名字起个自己认识好记的就行)属性里,要用的时候就取出来,再设置;

  3、开始比较之前,先了解一些基本的知识,比如说如何获取某个元素的尺寸大小、滚动条滚动距离及偏移位置距离;

1)屏幕可视窗口大小:对应于图中1、2位置处

    原生方法:window.innerHeight 标准浏览器及IE9+ || document.documentElement.clientHeight 标准浏览器及低版本IE标准模式 || document.body.clientHeight 低版本混杂模式

  jQuery方法: $(window).height()

2)浏览器窗口顶部与文档顶部之间的距离,也就是滚动条滚动的距离:也就是图中3、4处对应的位置;

    原生方法:window.pagYoffset——IE9+及标准浏览器 || document.documentElement.scrollTop 兼容ie低版本的标准模式 || document.body.scrollTop 兼容混杂模式;

   jQuery方法:$(document).scrollTop();

3)获取元素的尺寸:对应于图中5、6位置处;左边jquery方法,右边原生方法

jQuery滚动加载图片实现原理(jquery滚动条滚动到指定位置)

    $(o).width() = o.style.width;

    $(o).innerWidth() = o.style.width+o.style.padding;

    $(o).outerWidth() = o.offsetWidth = o.style.width+o.style.padding+o.style.border;

    $(o).outerWidth(true) = o.style.width+o.style.padding+o.style.border+o.style.margin;

注意:要使用原生的style.xxx方法获取属性,这个元素必须已经有内嵌的样式,如<div style="...."></div>;

如果原先是通过外部或内部样式表定义css样式,必须使用o.currentStyle[xxx] ||document.defaultView.getComputedStyle(0)[xxx]来获取样式值

4)获取元素的位置信息:对应与图中7、8位置处

    1)返回元素相对于文档document顶部、左边的距离;

    jQuery:$(o).offset().top元素距离文档顶的距离,$(o).offset().left元素距离文档左边缘的距离

    原生:getoffsetTop(),高程上有具体说明,这边就忽略了;

     顺便提一下返回元素相对于第一个以定位的父元素的偏移距离,注意与上面偏移距的区别;

   jQuery:position()返回一个对象,$(o).position().left = style.left,$(o).position().top = style.top;

  4、知道如何获取元素尺寸、偏移距离后,接下来一个问题就是:如何判断某个元素进入或者即将进入可视窗口区域?下面也通过一张图来说明问题。

    1)外面最大的框为实际页面的大小,中间浅蓝色的框代表父元素的大小,对象1~8代表元素位于页面上的实际位置;以水平方向来做如下说明!

    2)对象8左边界相对于页面左边界的偏移距离(offsetLeft)大于父元素右边界相对于页面左边界的距离,此时可判读元素位于父元素之外;

    3)对象7左边界跨过了父元素右边界,此时:对象7左边界相对于页面左边界的偏移距离(offsetLeft)小于 父元素右边界相对于页面左边界的距离,因此对象7就进入了父元素可视区;

    4)在对象6的位置处,对象5的右边界与页面左边界的距离 大于 父元素左边界与页面左边界的距离;

    5)在对象5位置处时,对象5的右边界与页面左边界的距离 小于 父元素左边界与页面左边界的距离;此时,可判断元素处于父元素可视区外;

    6)因此水平方向必须买足两个条件,才能说明元素位于父元素的可视区内;同理垂直方向也必须满足两个条件;具体见下文的源码;

四、扩展为jquery插件使用方法:$("selector").scrollLoad({ 参数在代码中有说明 })

本文已被整理到了《jquery图片加载方法汇总》 ,欢迎大家学习阅读。

标签: jquery滚动条滚动到指定位置

本文链接地址:https://www.jiuchutong.com/biancheng/377711.html 转载请保留说明!

上一篇:jQuery点击按钮弹出遮罩层且内容居中特效(jquery点击按钮跳转页面)

下一篇:jQuery position() 函数详解以及jQuery中position函数的应用

  • 购买礼品送客户个人所得税
  • 开普票的销项税额
  • 专用发票不抵扣怎么做账
  • 美团代金券是抵用券吗
  • 累计折旧计入
  • 发票查询校验码看不清怎么办
  • 个税手续费返还属于政府补助吗
  • 暂估入库商品作暂估冲红处理如何做?
  • 产品销售返利模式
  • 员工报销体检费,发票抬头开个人还是公司
  • 企事业单位承包承租经营
  • 公司发生的业务可以转让给子公司嘛?
  • 个税零申报工资填0吗
  • 企业预缴多交税了如何申请退税
  • 定期定额怎么报税
  • 现金为负数时怎么做账
  • 预付账款收到发票的会计分录
  • 王者荣耀中如何隐藏贵族标志
  • windos10不显示桌面
  • 去年的记账凭证错了怎么办
  • 物流运输公司要交税吗
  • 政府发放奖励金如何入账
  • 涉税专业服务机构是什么
  • 进项税一定是专票吗
  • Linux中stat命令显示文件的基本使用教程
  • edge浏览器百度网盘插件
  • 票据贴现业务如何核算
  • php连接数据表
  • css flaot
  • 房地产消防工程入什么科目
  • Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
  • 残保金是职工薪酬吗
  • 公交卡充值发票报销单怎么填
  • 资本公积根据什么填列
  • mysql服务器硬件配置
  • 企业其他业务收入要交税吗
  • 费用发票处理
  • 残疾人工资加计扣除包括社保吗
  • 差旅费误餐补助
  • 域名 续费
  • 某首饰商城为增值税一般纳税人,2021年1月发生以下业务
  • 超过保质期放冰箱还能吃吗
  • 事业单位财政直接支付购置固定资产
  • 物流运输货损管理规定
  • 交通运输业安全经费提取的会计处理
  • 酒店代金券是什么意思
  • 增值税收入的确认时间
  • 航天金税电子发票怎么读入
  • 科目怎么写?
  • 设备基础属于什么基础
  • sql server数据库中的null(空值)
  • win7系统如何打开
  • 微软win8下载
  • wp7.8升级wp8
  • solaris 11.4
  • 查看端口信息命令
  • Win8.164位/32位KB3096053补丁下载 主要修复KB3069114安装问题
  • 圣诞老人现在在干嘛
  • linux从一个命令获取数据到另一个命令
  • win10正式版声音不正常
  • Linux如何使用命令
  • cocos2d-x window实现鼠标移动 键盘事件
  • 基于个人同意处理个人信息的个人什么撤回其同意
  • yarn和npm一起使用冲突
  • linux中的shell命令
  • 备份多个数据库
  • python动态参数应用
  • Python安装包
  • easyui-dialog
  • 安卓手机图片缓存在哪
  • 合肥地税局客服电话
  • 地方税务局和国家税务局合并
  • 河北地方税务局网
  • 北京税务部门需要党员吗
  • 个体工商户两处所得,如何减半个税
  • 不予处罚不予立案
  • 2020年小规模纳税人普票免税政策
  • 纳税申报表有哪几种类型
  • 个税完税证明在电子税务局哪里打印
  • 中关村税务所上班时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设