zoukankan      html  css  js  c++  java
  • 京东放大镜效果

    开始以为是很难的事情,结果可以用别的思维去解决的,就显得很简单辣其实,比如说,图片放大,是本来的图片的大小,然后进行一个移动产生,所以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();
            })
            
            
            
            
        }
        
  • 相关阅读:
    JavaScript之DOM
    MapReduce多种join实现实例分析(一)
    JavaScript的文档对象模型DOM
    JavaScript原生实现观察者模式
    Idea环境下git 图形化操作
    一分钟教你如何实现唯美的文字描边
    Redis集群
    JAVA线程池的实际运用
    Java 线程池(ThreadPoolExecutor)原理解析
    win7开始菜单路径
  • 原文地址:https://www.cnblogs.com/caicaihong/p/9542669.html
Copyright © 2011-2022 走看看