首页 > 其他分享 >图片懒加载

图片懒加载

时间:2024-01-26 18:34:30浏览次数:24  
标签:lazy media xxx width background section5 加载 图片

依赖jquery
第一个函数:计算图片是否出现和消失在可视区

function isVisible(ele){
    let eleTop = ele.offset().top;
    let eleHeight = ele.outerHeight(true);
    let winScrollTop = $(window).scrollTop();
    let winHeight = $(window).height();
    let visible = false
    if(!(winScrollTop > eleTop+ eleHeight) && !(winScrollTop < eleTop - winHeight)) {
        
        visible = true
    }
    return visible
  }

 

第二个函数:获取所有图片,判断图片是否出现在可视区,如果出现,则给图片添加一个class

  function handleLazy(){
    // 图片懒加载
    let lazyDom = $('.xx-lazy');
    // 滚动条每次滚动都遍历判断元素是否到达可视区
    for(let i = 0; i<lazyDom.length; i++) {
      if(isVisible(lazyDom.eq(i))) {
        lazyDom.eq(i).addClass('xx-background-lazy');
      }
    }
  }
handleLazy()

 

第三:css

根据上面两个函数,会在class为xx-lazy的元素出现在可视区时,给元素添加class xx-background-lazy,所以需要在css中这样写:

/*这里是给模块添加fade动画*/
.xxx-lazy { /* transform: translateY(100px); */ opacity: 0; transition: opacity .3s ease; } .xxx-lazy.xxx-background-lazy { /* transform: translateY(0px); */ opacity: 1; }

 

 

背景图设置 - 分1倍图和2倍图:

/*懒加载给元素添加了 xxx-background-lazy后,就可以运用到下面的样式了,通过css给元素添加背景图 */
.xxx-section5-img.xxx-background-lazy { /* pc */ @media (min-width: 1000px) { background-image: url(../images/section5-pc-x1.jpeg); } @media (min-width: 1000px) and (-webkit-min-device-pixel-ratio: 1.5) { background-image: url(../images/section5-pc-x2.jpeg); } /* mb */ @media (max-width: 1000px) { background-image: url(../images/section5-mb-x1.jpeg); } @media (max-width: 1000px) and (-webkit-min-device-pixel-ratio: 1.5) { background-image: url(../images/section5-mb-x2.jpeg); } } /* webp - 需要判断浏览器是否支持webp格式的图片,如果支持那么在html添加一个class='webp',这样就可以运用下面的样式了 */ .webp .xxx-section5-img.xxx-background-lazy { /* pc */ @media (min-width: 1000px) { background-image: url(../images/section5-pc-x1.jpeg.webp); } @media (min-width: 1000px) and (-webkit-min-device-pixel-ratio: 1.5) { background-image: url(../images/section5-pc-x2.jpeg.webp); } /* mb */ @media (max-width: 1000px) { background-image: url(../images/section5-mb-x1.jpeg.webp); } @media (max-width: 1000px) and (-webkit-min-device-pixel-ratio: 1.5) { background-image: url(../images/section5-mb-x2.jpeg.webp); } }

 

 

最后要注意div的写法:

<figure class="umx-section6-figure">
 <!-- 这个div就是图片 --> <div class="xxx-lazy xxx-background xxx-section5-img"></div> <figcaption class="umx-figcaption">这里写模块中的文字等</figcaption> </figure>

 

 

div的样式:【(图片的宽/图片的高)* 100 = div的padding-bottom的百分比】

.xxx-section6-img {
  width: 100%;
  height: 0;
  padding-bottom: 53.95%;
   
  /* mb端的图片百分比 */
  @media (max-width: 1000px) {
    padding-bottom: 113.33%;
  }
}

标签:lazy,media,xxx,width,background,section5,加载,图片
From: https://www.cnblogs.com/chefweb/p/17990446

相关文章

  • linux服务器,启动服务jar包后,tail查看日志会卡主几分钟后,日志才加载出来,且访问接口很容
    首先:先排除服务器资源不足问题,看程序启动分配内存是否充足等问题原因:DNS配置异常导致的问题,程序运行时会去跑这些域名解析解决方法:/etc/resolv.conf中namespace配置注释,配置注释后,不用运行其他命令,会立即生效,重启服务,可以看到日志会立即返回,且调接口会快速返回,不容易超时......
  • Element ui table表格实现触底加载更多数据
    Elementuitable代码<el-table   header-align="center"   v-loadmore="addData"   :data="myData"   height="300"   v-loading="loading"   style="width:100%"   class=&......
  • Vue中JSON文件神奇应用fetch、axios异步加载与模块导入全指南
     在Vue中使用JSON文件有多种方式,包括使用fetch方法加载JSON文件、使用axios库加载JSON文件,以及将JSON文件导入为模块。以下是详细描述和相应的示例代码:1.使用fetch方法加载JSON文件:步骤:创建一个JSON文件,例如 data.json://data.json{"name":"John","age":......
  • 无法加载响应数据:request content was evicted from inspector cache
    这个错误通常是由于请求返回的内容太大而导致的。浏览器的开发者工具(Inspector)有一个缓存限制,如果请求的内容超过了这个限制,就会出现这个错误。解决这个问题的方法有几种:减小请求的内容大小:可以通过压缩请求的内容或者减少不必要的数据来减小请求的大小。增加缓存限制:可以......
  • vue2 手写思维导图编辑器,支持图片和节点拖拽(2)
    弹框模块DigitalXmindDialog.vue<template><el-dialog:title="title"width="1200px"class="auth-dialog"top="5%":append-to-body="true":lock-scroll="false":c......
  • vue2 手写思维导图编辑器,支持图片和节点拖拽(1)
    效果图:支持图片粘贴和布局重新计算可拖拽: 代码结构DigitalXmindDialog.vue//弹框VueXmind//脑图编辑器index.vue//主体编辑器XmindNode.vue//节点文件XmindSvgLine.vue//脑图底部的svg线段绘画板NodeAttributes.vue//右侧主题设置模块XmindStyleMixins......
  • 热门推荐的分页加载和分页条件
    分页加载 触底: 这一步作完成之后滚动触底就会继续追加下一页 分页条件(加载停下来的条件,后端的商品有限)   下面我们来测试一下为了方便测试我们改一下开始页数 或者:  下面就可以自己上微信开发者工具看一下效果了,到这里只是轻提示,下面我i们要设置结束标......
  • Airtest-Selenium实操小课③:下载可爱猫猫图片
    此文章来源于项目官方公众号:“AirtestProject”版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途1.前言上次实操小课分享,我们分享了如何使用Airtest-selenium实现自动化刷B站,还没看的同学可以戳这里回顾一下~那么这周我们看看如何实现使用Airtest-Selenium实......
  • Unity出AAB包资源加载过慢
    1)Unity出AAB包资源加载过慢2)UnityIL2CPP打包,libil2cpp.so库中没有Mono接口3)如何在URP中正确打出Shader变体4)XLua打包Lua文件粒度问题这是第370篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。UWA社区主页:com......
  • 用 UNPKG/CDNJS 国内镜像优化网页加载速度
    unpkg.com和cdnjs.cloudflare.com这两个官方域名的加载速度实在令人汗颜。抽了一下午找了些国内能用的高速稳定镜像,批量更换一下就能加速访问了。unpkg用Zstatic的镜像,把原来的unpkg.com换成s4.zstatic.net/npmcdnjs用360或者Zstatic的镜像,把原来的cdnjs.cloudfl......