jquery 图片点击放大预览功能详解
作者:九亓
这篇文章主要介绍了jquery 图片点击放大预览功能,结合实例形式详细分析了jquery 图片点击放大预览功能相关实现步骤、
一个简单相册预览功能,可缩放可拖动,只是觉得这个功能应该很常用,先记录下来方便下次
代码也都是我在项目中抠出来的,如果有什么问题欢迎留言讨论

html
图片列表的样式我就不写出来了 但是下面的class 和 布局结构 都很重要:
<div>
<div><img src="images/banner.jpg" ></div>
<div><img src="images/banner.jpg" ></div>
<div><img src="images/banner.jpg" ></div>
<div><img src="images/banner.jpg" ></div>
</div>查看图片的弹窗代码(核心):
<div></div> <div> <div>×</div> <div> <ul > </ul> </div> <div> <div>«</div> <div>»</div> </div> </div>
弹窗的样式
.seeImg_mask{ width:100%; height: 100%; position: fixed; top: 0px; bottom: 0px; left: 0px; right: 0px; background: rgba(0,0,0,0.7); margin: auto; z-index: 999; display: none; }
.seeImg_popup{ width: 80%; height: 80%; background: #fff; position: fixed; bottom: 200%; left: 10%; right: 0px; margin: auto; border: 10px rgba(0,0,0,0.2) solid; border-radius: 10px; z-index: 9999; }
.seeImg_close{ width: 40px; height: 40px; line-height: 35px; text-align: center; font-size: 28px; color: #fff; position: absolute; right: 0px; top: 0px; background: rgba(226, 36, 36, 0.72); cursor: pointer; }
.seeImg_swrieb{ width: 90%; height: 100%; margin: 0px auto; position: relative; overflow: hidden; }
.seeImg_list{ height: 100%; width: auto; display: flex; flex-direction: row; transition: all 0.5s; }
.seeImg_list li{ height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; position: relative; overflow: hidden; }
.seeImg_list li img{
height: 90%;display: block;position: absolute; top: -160px;cursor: all-scroll;
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Chrome/Safari/Opera */
-khtml-user-select: none; /* Konqueror */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently not supported by any browser */
padding: 200px 0px;
z-index: 555;
}
.seeImg_fun{ width: 100%; height: 40px; line-height: 40px; display: flex; flex-direction: row; justify-content: space-between; box-sizing: border-box; padding: 0px 15px; position: absolute; top: 0px; bottom: 0px; left: 0px; right: 0px; margin: auto; }
.fun_label{ font-size: 50px; color: #777; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }js部分
$(document).on("click",".seeimg",function(){
$(".seeImg_list li").remove();
var seeImglistLiLeng = $(this).parents(".imgnyr").children(".img-list").length;
$(".seeImg_popup").attr("data",seeImglistLiLeng)
var arrtimg = [];
$(this).parents(".imgnyr").children(".img-list").each(function(i){
var imgse = $(this).children("img").attr("src");
arrtimg.push(imgse)
});
for( var i in arrtimg){
var html ="";
html +="<li><img src=" +arrtimg[i]+ " class='enlarge' draggable='false' onmousewheel='return bbimg(this)' /></li>";
$(".seeImg_list").append(html)
}
var seeImgswriebWight = $(".seeImg_swrieb").width();
var seeImglistWigth = seeImgswriebWight * seeImglistLiLeng;
console.log(seeImglistWigth)
$(".seeImg_mask").show();
$(".seeImg_popup").css("bottom","10%");
$(".seeImg_list").width(seeImglistWigth)
$(".seeImg_list").css("margin-left","0px")
$(".seeImg_list li").width(seeImgswriebWight)
$(".seeImg_list").children("li").each(function(i){
$(this).children("img").attr("data",i)
$(this).children("img").addClass("maxdom"+i)
})
})
$(document).on("click",".seeImg_close",function(){
$(".seeImg_mask").hide();
$(".seeImg_popup").css("bottom","200%");
})
var UlMarRig = 0;
$(document).on("click",".labelRight",function(){
var roue = $(".seeImg_swrieb").width();
var mes = $(".seeImg_popup").attr("data");
var csdx = roue * mes;
console.log(csdx)
UlMarRig = UlMarRig - roue;
if( UlMarRig <= -csdx){
UlMarRig = 0;
}
$(".seeImg_list").css("margin-left", UlMarRig)
})
$(document).on("click",".labelLeft",function(){
var emgd = $(".seeImg_swrieb").width();
var aas = $(".seeImg_popup").attr("data");
var ddx = emgd * aas;
if( UlMarRig == 0){
UlMarRig = -ddx;
}
UlMarRig = UlMarRig + emgd;
$(".seeImg_list").css("margin-left", UlMarRig)
})
var ment = 90;
function bbimg(o){
var zoom=parseInt(o.style.zoom, 10)||100;
zoom+=event.wheelDelta/12;
console.log(zoom)
if(zoom>=110){
ment = ment +10;
o.style.height = ment +'%';
}
if(zoom<110){
ment = ment -10;
o.style.height = ment +'%';
}
// console.log(ment)
}
$(document).on("mousedown",".enlarge",function(e){
var u = $(this).attr("data");
// e.pageX
var imtLeft = $(this).position().left;
var imtTop = $(this).position().top;
var distenceX = e.pageX - imtLeft; //记录鼠标点击的位置与div左上角水平方向的距离
var distenceY = e.pageY - imtTop; //记录鼠标点击的位置与div左上角数值方向的距离
$(document).mousemove(function(e){
var x = e.pageX - distenceX;
var y = e.pageY - distenceY;
if(x<0){
x= x ;
}else if(x>$(document).width()-$('.maxdom'+u).outerWidth(true)){
x = $(document).width()-$('.maxdom'+u).outerWidth(true);
}
if(y<0){
y= y;
}else if(y>$(document).height()-$('.maxdom'+u).outerHeight(true)){
y = $(document).height()-$('.maxdom'+u).outerHeight(true);
}
$('.maxdom'+u).css({'left':x+'px','top':y+'px'});
});
$(document).mouseup(function(){
$(document).off('mousemove'); //移除鼠标移动事件
});
})感兴趣的朋友可以使用如下在线运行工具测试上述代码运行效果:
http://tools.jb51.net/code/HtmlJsRun
http://tools.jb51.net/code/WebCodeRun
您可能感兴趣的文章:
- jQuery实现等比例缩放大图片让大图片自适应页面布局
- 基于jquery的防止大图片撑破页面的实现代码(立即缩放)
- jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
- jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
- jQuery实现鼠标滑过预览图片大图效果的方法
- jQuery实现大图轮播
- jQuery实现的小图列表,大图展示效果幻灯片示例
- jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
- jQuery实现点击小图片淡入淡出显示大图片特效
- jQuery实现点击查看大图并以弹框的形式居中
- 基于jQuery插件实现点击小图显示大图效果
- jquery实现移动端点击图片查看大图特效
- jQuery实现点击小图显示大图代码分享
