js实现点击图片放大效果,以及懒加载图片

近期有个后端管理页面小优化,原来的图片是点击才会去后端请求图片展示到前端,用dialog的方式展示,但是不太直观

存在两个问题

1、点击查看后,电子照片会变形,不易查看
2、没有小图可浏览,都需要点击查看方能查看;

按照需求,最简单的实现就是再加上时把所有的图片获取,缩略图展示,点击弹出展示大图即可,但是会在多图的情况下,会加载很慢,一个图最大2M,10张图就将近20M,会很影响页面的加载.

所以要实现两个功能

  1. 缩略图点击放大展示.
  2. 图片延迟加载.

js点击图片放大效果

缩略图展示要求等比例展示,有个小技巧,只设置 width 或者 height 属性大小就可以实现.

<img width="80" height="25" src="../image/ms/bk_page.gif" border="0">

关键代码

html

<div><img height="100" width="100" src="https://cdn.pixabay.com/photo/2018/08/14/13/23/ocean-3605547_960_720.jpg" class="pic"/><img height="100" width="100" src="https://cdn.pixabay.com/photo/2011/12/14/12/21/orion-nebula-11107_960_720.jpg" class="pic"/><img height="100" width="100" src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569_960_720.jpg" class="pic"/></div><div id="outerdiv" style="position:fixed;top:0;left:0;background:rgba(0,0,0,0.7);z-index:2;width:100%;height:100%;display:none;"><div id="innerdiv" style="position:absolute;"><img id="bigimg" style="border:5px solid #fff;" src="" /></div>

js

<script src="./jquery.min.js"></script>
<script type="text/javascript">$(function(){ $(".pic").click(function(){ var _this = $(this);//将当前的pimg元素作为_this传入函数 imgShow("#outerdiv", "#innerdiv", "#bigimg", _this); }); }); function imgShow(outerdiv, innerdiv, bigimg, _this){ var src = _this.attr("src");//获取当前点击的pimg元素中的src属性 $(bigimg).attr("src", src);//设置#bigimg元素的src属性 /*获取当前点击图片的真实大小,并显示弹出层及大图*/ $("<img/>").attr("src", src).load(function(){ var windowW = $(window).width();//获取当前窗口宽度 var windowH = $(window).height();//获取当前窗口高度 var realWidth = this.width;//获取图片真实宽度 var realHeight = this.height;//获取图片真实高度 var imgWidth, imgHeight; var scale = 0.8;//缩放尺寸,当图片真实宽度和高度大于窗口宽度和高度时进行缩放 if(realHeight>windowH*scale) {//判断图片高度 imgHeight = windowH*scale;//如大于窗口高度,图片高度进行缩放 imgWidth = imgHeight/realHeight*realWidth;//等比例缩放宽度 if(imgWidth>windowW*scale) {//如宽度扔大于窗口宽度 imgWidth = windowW*scale;//再对宽度进行缩放 } } else if(realWidth>windowW*scale) {//如图片高度合适,判断图片宽度 imgWidth = windowW*scale;//如大于窗口宽度,图片宽度进行缩放 imgHeight = imgWidth/realWidth*realHeight;//等比例缩放高度 } else {//如果图片真实高度和宽度都符合要求,高宽不变 imgWidth = realWidth; imgHeight = realHeight; } $(bigimg).css("width",imgWidth);//以最终的宽度对图片缩放 var w = (windowW-imgWidth)/2;//计算图片与窗口左边距 var h = (windowH-imgHeight)/2;//计算图片与窗口上边距 $(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性 $(outerdiv).fadeIn("fast");//淡入显示#outerdiv及.pimg }); $(outerdiv).click(function(){//再次点击淡出消失弹出层 $(this).fadeOut("fast"); }); }</script>

js 懒加载图片实现

原文地址请参考: js懒加载图片实现

原理

将页面中的img标签src指向一张小图片或者src为空,然后定义data-src(这个属性可以自定义命名,我才用data-src)属性指向真实的图片。src指向一张默认的图片,否则当src为空时也会向服务器发送一次请求。可以指向loading的地址。

当载入页面时,先把可视区域内的img标签的data-src属性值负给src,然后监听滚动事件,把用户即将看到的图片加载。这样便实现了懒加载。

<img src="default.jpg" data-src="http://ww4.sinaimg.cn/large/006y8mN6gw1fa5obmqrmvj305k05k3yh.jpg" />

参考文档

  1. js懒加载图片实现
  2. js点击图片放大效果

js实现点击图片放大效果,以及懒加载图片相关推荐

  1. 微信小程序封装懒加载图片

    微信小程序封装懒加载图片 js /components/LazyImage/index.js // components/LazyImage/index.js Component({/*** 组件的属 ...

  2. html图片懒加载,图片懒加载原理及实现

    原理: 先将img标签的src链接设为同一张图片(比如空白图片),然后给img标签设置自定义属性(比如 data-src),然后将真正的图片地址存储在data-src中,当JS监听到该图片元素进入可视 ...

  3. ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片如何优化 1.概述 在IOS下通过URL读一张网络图片并不像其他编程语言那样可以直接把图片路径放到图片路径的位置就ok,而是需要我们通过一段类似流的方式去加载网络图片,接着 ...

  4. vue项目- v-lazy懒加载 图片没有出来之前 loding的图标占位

    v-lazy 表示在图片没有出来之前,会有loding的图标去占位 步骤1.安装插件 npm i vue-lazyload -S 步骤2.全局配置 在main.js中设置 // 懒加载,在图片数据还没 ...

  5. 关于img标签加载图片失败优化以及懒加载。

    这篇博客算是完全的笔记了,记录一下平常中不怎么注意的img标签的一些事. 昨天看到这篇Handling broken images with the service worker文章,这文章中有另外提 ...

  6. vue图片加载失败使用默认图片,el-image支持懒加载,自定义占位、加载失败等

    <template><d2-container><h3>image加载失败使用默认图片</h3><img src=""alt= ...

  7. android 实现异步加载图片,Android中ImageView异步加载图片类

    本源码是从网络找到经修改以方便直接调用感觉用着还可以 首先在项目中添加一个专门加载图片的类AsyncImageLoaderpackage com.demo.core; import java.io.I ...

  8. html5 数据懒加载图片,Jsoup+HtmlUnit获取懒加载数据

    需要的包: org.projectlombok lombok provided 1.16.20 org.jsoup jsoup 1.8.3 net.sourceforge.htmlunit htmlu ...

  9. html 懒加载图片实现方法

    懒加载逻辑 一般如果场景比较大,滚动条很长,图片比较多的情况下,不使用赖加载图片会一下子把资源都加载,导致性能很慢,甚至没有滚动到下面也加载了,很浪费资源 现在通过滚动事件来处理图片加载,我们先吧要显 ...

最新文章

  1. 记录下,我们平时开发当中不得不知道的HTTP状态码
  2. php登陆验证码错误,DEDE织梦后台登陆提示验证码错误的方法
  3. mongodb:linux基本操作
  4. python学习路线-Python学习路线
  5. [Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
  6. ODB——基于c++的ORM映射框架尝试(使用)
  7. ios开发text kit_IOS开发入门之TextKit详解
  8. 一步一步学Ruby(五): Class, Module, Object,Kernel的关系
  9. 图文介绍进程和线程的区别
  10. Python经典编程习题100例,供初学者学习
  11. 柳传志回应“联想5G投票事件”:不要罔顾事实挑拨离间
  12. flutter 聊天界面+表情图片
  13. UG\NX二次开发 判断两个圆柱面共轴的思路
  14. Python安装和导入cv库
  15. Faster R-CNN论文翻译笔记
  16. ubuntu安装zlib
  17. 1、几种进程间的通信方式
  18. VBA将excel中的多个工作表sheet合成一个工作表,多个工作簿的多个工作表合并为一个工作簿
  19. 《手把手构建人工智能产品》-产品经理的AI实操手册
  20. php手机网页在线录音ios,iOS 录音实现

热门文章

  1. Pr:制作倒计时片段
  2. 商户后台返回数据签名错误_微信小程序 用户信息开放数据校验与解密
  3. 【问题集锦】【Jmeter】打开jmeter脚本时报如下错:problem loading XML from: CannotResolveClassException
  4. msyql关于大于号和order by
  5. 科大奥锐干涉法测微小量实验的数据_基于组件的虚拟物理仿真实验软件V4.0
  6. 矩阵合同和矩阵相似的对比
  7. 反垃圾邮件网关的选型标准考量录(1)
  8. 【图像插值】基于matlab稀疏拉普拉斯滤波器图像插值【含Matlab源码 2055期】
  9. 三星整合Bada与Tizen系统 意在挖掘Bada社
  10. Java之父呼吁大家弃用Java 8