• 京东放大镜效果


    开始以为是很难的事情,结果可以用别的思维去解决的,就显得很简单辣其实,比如说,图片放大,是本来的图片的大小,然后进行一个移动产生,所以UI很重要,这样子,js写起来才轻松多一点

    主要的js代码如下:

    function bigImg () {
            
            var $mask = $("#mask");
            var $maskTop = $("#maskTop");
            var $loading = $("#loading");
            var $largeImg = $("#largeImg");
            var $mediumImg = $("#mediumImg");
            //小黄块的宽高
            var maskWidth = $mask.width();
            var maskHeight = $mask.height();
            //移动区域
            var maskTopWidth = $maskTop.width();
            var maskTopHeight = $maskTop.height();
            
            var $largeImgContainer = $("#largeImgContainer");
            
            
            
            
            $maskTop.hover(function(){
                
                
                $mask.show();
                
                var src = $mediumImg.attr('src').replace('-m.', '-l.')
                  $largeImg.attr('src', src)
                $largeImgContainer.show();
                //显示小黄块之后,等待加载大图出来再进行小黄块的移动
                $largeImg.on('load',function () {
                    
                    //得到大图的尺寸
                    var largeImgWidth = $largeImg.width();
                    var largeImgHeight = $largeImg.height();
                    
                    //大图容器的尺寸是大图的二分之一
                    $largeImgContainer.css({
                        largeImgWidth/2,
                        height:largeImgHeight/2
                    })
                    
                    $largeImg.show();
                    $loading.hide();
                    
                    
                    $maskTop.mousemove(function(event){
                    event = event || window.event
                    var eventLeft = event.offsetX;
                    var eventTop = event.offsetY;
                    
                    //定位把小黄块中心点到当前鼠标的位置,从而实现移动
                    var left = eventLeft - maskWidth/2;
                    var top = eventTop - maskHeight/2;
                    
                    if(left<0 ){
                        left = 0;
                    }else if(left > maskTopWidth-maskWidth){
                        left = maskTopWidth-maskWidth;
                    }
                    
                    if(top<0){
                        top = 0;
                    }else if (top>maskTopHeight-maskHeight) {
                        top = maskTopHeight - maskHeight;
                    }
                    
                    //设置小黄块的位置
                    $mask.css({
                        left:left,
                        top:top
                    })
                    
                    left = -left *  largeImgWidth / maskTopWidth;
                    top = -top * largeImgHeight / maskTopHeight;
                    $largeImg.css({
                        left:left,
                        top:top
                    })
                })
                })
                
                
            },function(){
                $mask.hide();
                $largeImg.hide();
                $largeImgContainer.hide();
            })
            
            
            
            
        }
        
  • 相关阅读:
    Java中ArrayList与LinkedList的区别
    Java中String、StringBuffer、StringBuilder的区别
    Java中的String类能否被继承?为什么?
    JAVA有哪些数据类型?基本数据类型各占多少个字节
    Linux远程复制命令SCP
    CentOS添加用户并加入sudo权限
    nginx配置反向代理解决前后端分离跨域问题
    执行ssh-add时出现Could not open a connection to your authentication agent
    Git 修改源地址
    ssh配置git clone简易流程
  • 原文地址:https://www.cnblogs.com/caicaihong/p/9542669.html
Copyright © 2020-2023  润新知