首页 > 代码库 > js 实现显示局部方法的效果

js 实现显示局部方法的效果

网站上面有些时候一些小小的动作可能引起别人的瞩目,可能会增加别人对自己网站的兴趣,这是一个局部放大的小例子。先放上去,等到后期我有空了,再添加点东西把它变成一个插件。


<head>

    <title></title>

    <script src="http://www.mamicode.com/js/jquery-1.8.3.min.js" type="text/javascript"></script>

    <style type="text/css" >

    #bigimg

    {

          position:absolute;

          display:none;

          overflow:hidden;

          height:200px;

          width:200px;

    }

    #smalldiv

    {

       position:absolute;

       display:none; 

          

    }

    </style>

    <script type="text/javascript">

        $(function () {

            var count = 0;


            $("#img").mousemove(function (e) {

                var smalldiv = $("#smalldiv");

                var ZoomSizeWidth = $("#img1").width() / $("#img_zoom").width(); //宽放大的倍数

                var ZoomSizeHeight = $("#img1").height() / $("#img_zoom").height();//高放大的倍数

                $("#bigimg").show();

                smalldiv.show();

                var mouseX = e.pageX + 5;

                var mouseY = e.pageY + 5;

             


                if (e.pageX < $(this).offset().left + smalldiv.width() / 2) {//当鼠标的X坐标小于图片与div遮罩层的x坐标和是divx=0;

                    divX = 0;

                }

                else if (e.pageX > $(this).offset().left + smalldiv.width() / 2 && e.pageX < $(this).offset().left + $(this).width() - smalldiv.width() / 2) {//鼠标的X坐标在图片内部并且小于图片最右边的X坐标

                    divX = e.pageX - $(this).offset().left - smalldiv.width() / 2;

                }

                else if (e.pageX > $(this).offset().left + $(this).width() - smalldiv.width() / 2) {//鼠标的X坐标大于图片的最右边的X坐标 (Y轴同理)

                    divX = $(this).width() - smalldiv.width();

                }


                if (e.pageY < $(this).offset().top + smalldiv.height() / 2) {

                    divY = 0;

                }

                else if (e.pageY > $(this).offset().top + smalldiv.height() / 2 && e.pageY < $(this).offset().top + $(this).height() - smalldiv.height() / 2) {

                    divY = e.pageY - $(this).offset().top - smalldiv.height() / 2;

                }

                else if (e.pageY > $(this).offset().top - smalldiv.height()) {

                    divY = $(this).height() - smalldiv.height();

                }


                $("#bigimg").css("top", mouseY).css("left", mouseX);

                smalldiv.css("top", divY).css("left", divX);

                smalldiv.appendTo("#img");

                var tempX = smalldiv.offset().left - $(this).offset().left;//通过对大图的位置偏移来起到放大的效果

                var tempY = smalldiv.offset().top - $(this).offset().top;

                  //让图片实现左边位移

                  $("#img1").css("top", -tempY * ZoomSizeHeight).css("left", -tempX * ZoomSizeWidth);

            });


            $("#img_zoom").mouseleave(function () {

               

                $("#smalldiv").hide();

                $("#bigimg").hide();

            });

        })

    </script>

</head>

<body>

<div id="img" style=" width:200px; height:200px;margin-left:200px; position:relative; margin-top:30px"><img alt="图片" src="http://www.mamicode.com/img/20120312171453_m8CJP.jpg" id="img_zoom" width="200" height="200"/></div>

<div id="bigimg" ><img   id="img1" src="http://www.mamicode.com/img/20120312171453_m8CJP.jpg" width="800px" height="800px" style="position:absolute" /></div>

<div id="smalldiv" style="width:50px; background-color: rgba(0,0,0,0.5); height:50px; border:1px solid gray; "></div>

</body>


js 实现显示局部方法的效果