JQuery实现点击缩略图查看大图效果
2016-05-18 16:00
537 查看
点击缩略图查看大图效果,这里存在一个如何获取图片真实大小的问题。在手机端页面,插入的图片大小都是按照图片的原始尺寸在展示的,如果图片太大完全超出手机的屏幕尺寸 ,我们的bootstrap响应式针对图片的解决方案如下:
手机端真实效果如图所示,点击图片呈现的效果和图片在页面上本身呈现的效果大小一样,那我们的点击放大图片效果就没有任何意义了。
我们想要的是页面上显示的是小图,点击显示的是真实图片的大小
页面布局思路:
1 我们要创建一个遮罩层#outdiv
2 装图片的容器div。.indiv
3 显示大图的img标签
想实现这种点击放大效果,我们就要用JS来实现了。具体的JQuery实现思路如下:
1 获取手机浏览器窗口的宽度和高度。winW,winH
2 获取图片的真实大小 。imgW,imgH。这里不能直接去获取图片的宽度高度$(".imgclass").width(),$('.imgclass').height(),获取的不是图片真实的宽度和高度
1> 需要创建一个img标签
2> 获取 要放大图片的 src地址(imgsrc),让新创建的img的src地址等于imgsrc
3> 新创建的图片加载完成后,重新获取新创建的图片的大小,此时获取的图片宽度和高度 才是图片的真实大小
3 比较图片大小和浏览器窗口的大小。如果 图片的真实宽度大于浏览器窗口的宽度(imgW > winW),设置图片的宽度等于浏览器的宽,图片的高度设置为auto。如果 图片的真实宽度小于浏览器窗口的宽度(imgW < winW),图片就按原尺寸大小展示。
4 让遮罩层(#oudiv),fadein和fadeout在click事件里来回切换。
这样一个点击图片实现放大效果就实现了
,好开心,我的JS思路已经按步骤表达的很清楚啦,相信大家都能看懂。来直接上代码!
,加油。待续~~
.img-responsive{ display: block; max-width: 100%; height: auto; }
手机端真实效果如图所示,点击图片呈现的效果和图片在页面上本身呈现的效果大小一样,那我们的点击放大图片效果就没有任何意义了。
我们想要的是页面上显示的是小图,点击显示的是真实图片的大小
页面布局思路:
1 我们要创建一个遮罩层#outdiv
2 装图片的容器div。.indiv
3 显示大图的img标签
.result{position: fixed;top:0;left:0;background: rgba(0,0,0,0.5);z-index:1000;width:100%;height:100%;display: none;} .imgresult{border:5px solid #fff;} .indiv{position: absolute;}
<div class="result" id="outdiv"> <div class="indiv"> <img class="imgresult" id="bigimg" src=""> </div> </div>
<div class="ptb10 clearfix">支付截图:<img src="images/mao.jpg" class="imgclass img-responsive" style="width:30%;"></div> <div class="ptb10 clearfix">身份证图片:<img src="images/example.png" class="imgclass img-responsive" style="width:30%;"></div>
想实现这种点击放大效果,我们就要用JS来实现了。具体的JQuery实现思路如下:
1 获取手机浏览器窗口的宽度和高度。winW,winH
2 获取图片的真实大小 。imgW,imgH。这里不能直接去获取图片的宽度高度$(".imgclass").width(),$('.imgclass').height(),获取的不是图片真实的宽度和高度
1> 需要创建一个img标签
2> 获取 要放大图片的 src地址(imgsrc),让新创建的img的src地址等于imgsrc
3> 新创建的图片加载完成后,重新获取新创建的图片的大小,此时获取的图片宽度和高度 才是图片的真实大小
3 比较图片大小和浏览器窗口的大小。如果 图片的真实宽度大于浏览器窗口的宽度(imgW > winW),设置图片的宽度等于浏览器的宽,图片的高度设置为auto。如果 图片的真实宽度小于浏览器窗口的宽度(imgW < winW),图片就按原尺寸大小展示。
4 让遮罩层(#oudiv),fadein和fadeout在click事件里来回切换。
这样一个点击图片实现放大效果就实现了
,好开心,我的JS思路已经按步骤表达的很清楚啦,相信大家都能看懂。来直接上代码!
function showImg(outdiv,indiv,bigimg,thiselement){ var winW = $(window).width(); var winH = $(window).height(); var src = $(thiselement).attr('src'); $(bigimg).attr("src",src); $("<img/>").attr("src",src).load(function(){ var imgW = this.width; var imgH = this.height; var scale= imgW/imgH; if( imgW > winW ){ $(bigimg).css("width","100%").css("height","auto"); imgH = winW/scale; var h=(winH-imgH)/2; $(indiv).css({"left":0,"top":h}); }else{ $(bigimg).css("width",imgW+'px').css("height",imgH+'px'); var w=(winW-imgW)/2; var h=(winH-imgH)/2; $(indiv).css({"left":w,"top":h}); } $(outdiv).fadeIn("fast"); $(outdiv).click(function(){ $(this).fadeOut("fast"); }); }); } $('.imgclass').click(function(){ var thiselement=$(this); showImg("#outdiv",".indiv","#bigimg",thiselement); });但这样也不是最完美的,如何在手机端双击或者触摸 放大图片(#bigimg)可以让图片实现局部放大效果呢?又有了新的挑战
,加油。待续~~
相关文章推荐
- jquery------添加jQuery对象方法
- noty – jQuery通知插件全面解析
- jquery uploadify+java
- jquery 添加节点的几种方法介绍
- jquery validator扩展
- jQuery获取文本节点之 text()/val()/html() 方法区别
- jQuery实现图片向左向右切换效果的简单实例
- Jquery “回到顶部”
- jquery 根据样式或者名称获取 对象遍历赋值
- jquery 获取select选中的值
- jQuery 选择器
- jQuery获取高度问题
- jquery中的deferred详解
- 深入理解JQuery中的事件与动画
- jquery使用类似于java的集合
- JQUERY获取当前页面的URL信息
- jQuery cookie操作
- jquery2
- Jquery学习1
- jQuery添加options点击事件并传值实例代码