图片放大功能如何做?jquery实现

花了很长时间撸了个网站,观点,其中需要一个图片放大功能,网上找了半天发现都没有中意的,最后无奈之下自己写了一个,演示地址,演示图片:

QQ截图20171217152540.png

自我感觉效果还不错,现在分享开来给大家看看,哪里不好还请多多指教,谢谢大家。
css 部分:

.zoomify-dialog-pic {  
     position: fixed;  
     top: 0;  
     bottom: 0;  
     left: 0;  
     right: 0;  
     background: rgba(0,0,0,0.35);  
     z-index: 99999;  
     display: none;  
}  
   
.zoomify-dialog-pic .dialog-body {  
        
      position:absolute;  
      width: 100%;  
      max-width: 250px;  
      max-height: 300px;  
      margin-top:-150px;/*div 高度的一半*/  
      margin-left:-125px;/*div 宽度的一半*/  
      top:50%;  
      left:50%;  
      padding:10px;  
      border-radius:5px;  
      background: white;  
}  
        
.zoomify-dialog-pic .dialog-body img {  
     width: 100%;  
}  
   
.magnifier {  
  cursor: -moz-zoom-out;  
  cursor: -webkit-zoom-out;  
  cursor: zoom-out;  
  cursor:url('icon/magnifier.ico'),auto;  
}  
   
.un-magnifier {  
  cursor: -moz-zoom-in;  
  cursor: -webkit-zoom-in;  
  cursor: zoom-in;  
  cursor:url('icon/unmagnifier.ico'),auto;  
}  

说明下,上面 css 的 cursor:url 请放到自己的图片服务器上,万恶的 IE 不支持本地
js 部分:

var ROOT = $("input[name='globalPath']").val();
 
function zoomOut(orginImg,times){
     
    var obj=$(".zoomify-dialog-pic .dialog-body");
    var img=$(".zoomify-dialog-pic .dialog-body img");
 
    var imgW=$(orginImg).width();
    var imgH=$(orginImg).height();
 
    var newH=imgH*times;
    var newW=imgW*times;
     
    var bodyH=$("body").height();
    var bodyW=$("body").width();
     
    if(newW>bodyW){
        newW=bodyW-40;
        obj.css("padding","5px");
    }
     
    if(newH>bodyH){
        newH=bodyH-40;
        obj.css("padding","5px");
    }
     
    //图片新高度、宽度
    img.css("width",newW+"px");
    img.css("height",newH+"px");
     
    //容器新高度、宽度,因为图片放大了,所以容器也必须放大
    //不要用 padding 属性,ie 下不支持
    var padding=parseInt(obj.css("padding-top"));
     
    cWith=newW+padding*2;
    cHeight=newH+padding*2;
     
    obj.css("max-width",cWith+"px");
    obj.css("max-height",cHeight+"px");
     
    obj.css("margin-left",(cWith/2)*-1+"px");
    obj.css("margin-top",(cHeight/2)*-1+"px");
}
 
function insertPic(url){
    html='<div class="zoomify-dialog-pic">'+
        '<div class="dialog-body">'+
            '<img src="'+url+'" class="un-magnifier">'+
        '</div>'+
    '</div>';
    return html;
}
 
$(".page-content-l").on('click','p img',function(){
 
    var url=$(this).attr('src');
    html=insertPic(url);
    $("body").append(html);
     
    zoomOut(this,1.2);
    $(".zoomify-dialog-pic").show();
});
 
$("html").on('click','.zoomify-dialog-pic',function(){
    $(this).remove();
});
 
$(".page-content-l").on("mouseover mouseout","p img",function(event){
    if(event.type == "mouseover"){
        $(this).addClass("magnifier");
    }else if(event.type == "mouseout"){
        $(this).removeClass("magnifier");
    }
});

代码是毫无保留公开,绝对可以使用的,喜欢给我点个赞,也可以加我的 qq 群交流:284205104,谢谢您的阅读。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • vue插件介绍 2. 插件分类 主要注册与绑定机制如下: export default{install(Vue...
    Osmond_wang阅读 2,726评论 0 1
  • 百度首页 登录 注册 新闻网页贴吧知道音乐图片视频地图百科文库 进入词条搜索词条帮助 首页 分类 艺术 科学 自然...
    lmh829阅读 2,985评论 0 0
  • 今天我们要给大家分享的书叫《给人好印象的秘诀:如何让别人信任你、喜欢你、帮助你》。书中分享了三个部分的内容:两个印...
    Louise718阅读 1,607评论 0 0
  • 最让人心里纠着难受是对未知的不确定,是对自己找不到位置。 这种感觉比迷茫还要恐怖。 心整个就是掉起的。 今天和金牌...
    小树慢慢长阅读 1,355评论 0 0
  • 1、许多时候,我们面对的困难,我们无法解决。 2、我们企图逃避的时候,却发现我们已经无路可走。 3、这时我们开始呼...
    暗黑系狒狒张阅读 3,153评论 0 1

友情链接更多精彩内容