• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > jquery图片放大镜功能的实例代码

jquery图片放大镜功能的实例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-08-16

通过本文主要向大家介绍了jquery,放大镜等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

?<script type="text/javascript">
/**
@开发:杨永
@功能:实现细节放大,图片对应切换,自由定义css样式实现自由铺满视口等功能
@说明:基于jQ的放大镜插件,可根据需要自由调整布局来适应各种设计效果
*/
(function(){
        function Zoom(object){
                this.zoomArea=$(".zoom",object);//保存促发放大效果的区域
                this.moveArea=$(".move",object);//保存移动区域
                this.zoomDetail=$(".zoomDetail",object);//保存放大镜区域
                this.zoomDetailImg=$("img",this.zoomDetail);//保存放大镜里面的图
                this.zoomAreaWidth=this.zoomArea.width();
                this.moveAreaWidth=this.moveArea.width();
                this.zoomAreaHeight=this.zoomArea.height();
                this.moveAreaHeight=this.moveArea.height();
                this.zoomDetailWidth=this.zoomDetail.width();
                this.zoomDetailHeight=this.zoomDetail.height();
                this.zoomAreaOffset=this.zoomArea.offset();//初始化放大区域在视口中的相对偏移;
                this.XY=null;//初始化鼠标相对于放大区域的偏移偏移值
                this.moveBili=null;//
                var _this_=this;
                this.zoomArea.mousemove(function(e){//当鼠标在放大区域移动的时候执行
                                                 _this_.move(e.pageX,e.pageY);   
                                        }).mouseover(function(){
                                            _this_.moveArea.show();
                                            _this_.zoomDetail.show();
                                            }).mouseout(function(){
                                                _this_.moveArea.hide();
                                                _this_.zoomDetail.hide();                                               
                                                });
                this.calculate();//初始化并计算出需要的比例值
                //以下是小图部分的功能实现
                this.l=0;
                this.scrollObj=$(".slideMain ul",object);//保存ul滚动对象
                this.lis=this.scrollObj.children();//保存小图片列表
                this.btnR=$(".btnR",object);//保存右边按钮
                this.btnL=$(".btnL",object);//保存左边边按钮
                this.lis.click(function(){
                                        _this_.changeImgSrc(this);
                                        });
                if(this.lis.length>6){//判断图片数是否超出显示区域,是的话就注册滚动事件
                    this.s=this.lis.length-6;//获取多余出来的图片数
                    this.scrollObj.width(60*this.lis.length+"px");//当图片数超出默认值时,设置ul的宽度
                    this.btnL.click(function(){_this_.scrollRight();}).mouseover(function(){$(this).addClass("hover")}).mouseout(function(){$(this).removeClass("hover");});
                    this.btnR.click(function(){_this_.scrollLeft();}).mouseover(function(){$(this).addClass("hover")}).mouseout(function(){$(this).removeClass("hover");});;
                }
              };
        Zoom.prototype={
            scrollLeft:function(){
                if(Math.abs(this.l)==this.s){return};
                this.l--;
                this.scrollObj.animate({left:this.l*58+"px"},"fast");   
                },
            scrollRight:function(){
                if(this.l==0){return};
                this.l++;
                this.scrollObj.animate({left:this.l*58+"px"},"fast");
                },
            changeImgSrc:function(o){
                //改变标识样式
                $(o).addClass("selected").siblings().removeClass("selected");
                this.zoomArea.find("img").attr("src",$(o).find("img").attr("medium-img"));
                this.zoomDetailImg.attr("src",$(o).find("img").attr("medium-img"));

                },
            move:function(x,y){//鼠标在放大区域移动的时候执行的函数
                    this.XY=this.mousePosAndSetPos(x,y);//计算出鼠标相对于放大区域的x,y值
                    //设置滑块的位置
                    this.moveArea.css({
                                      left:this.XY.offsetX+"px",
                                      top:this.XY.offsetY+"px"
                                      });
                    //设置大图在细节位置
                    this.zoomDetailImg.css({
                                           marginLeft:-this.XY.offsetX*this.moveBili+"px",
                                           marginTop:-this.XY.offsetY*this.moveBili+"px"
                                           });
                },
            mousePosAndSetPos:function(x,y){//实时计算并设置滑块的位置
                x=x-this.zoomAreaOffset.left-this.moveArea.width()/2;
                y=y-this.zoomAreaOffset.top-this.moveArea.height()/2;
                x=x<0?0:x;
                y=y<0?0:y;
                x=x>(this.zoomAreaWidth-this.moveAreaWidth)?this.zoomAreaWidth-this.moveAreaWidth:x;
                y=y>(this.zoomAreaHeight-this.moveAreaHeight)?this.zoomAreaHeight-this.moveAreaHeight:y;
                return {
                        offsetX:x,
                        offsetY:y
                        };  
                },
            calculate:function(){//计算函数
                    var widthBili,heightBili;
                    //计算移动的滑块与放大镜铺面显示的比例宽高
                    widthBili=(this.zoomAreaWidth*this.zoomDetailWidth)/this.moveAreaWidth;
                    heightBili=(this.zoomAreaHeight*this.zoomDetailHeight)/this.moveAreaHeight;
                    //把比出来的宽高
                    this.zoomDetailImg.css({width:widthBili+"px",height:heightBili+"px"});
                    //返回移动的比例
                    this.moveBili=(widthBili-this.zoomDetailWidth)/(this.zoomAreaWidth-this.moveAreaWidth);
                }
            };
          var zoom=new Zoom($(".ZoomMain").eq(0));    
})();

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于jQuery对象和DOM对象和字符串之间的转化实例
  • jquery+css实现简单的图片轮播效果
  • 使用jQuery实现鼠标点击左右按钮滑动切换
  • jQuery实现上传图片前预览效果功能
  • jQuery初级教程之网站品牌列表效果
  • 基于jquery实现多选下拉列表
  • jQuery接受后台传递的List的实例详解
  • 详解jquery选择器的原理
  • jQuery上传插件webupload使用方法
  • 关于jquery form表单序列化的注意事项详解

相关文章

  • 2017-08-16解决jquery无法找到其他父级子集问题的方法
  • 2017-08-16一个CSS+jQuery实现的放大缩小动画效果
  • 2017-08-16jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
  • 2017-08-16javascript 历史记录 经常用于产品最近历史浏览第1/2页
  • 2017-08-16分享15个大家都熟知的jquery小技巧
  • 2017-08-16jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
  • 2017-08-16jQuery解决iframe高度自适应代码
  • 2017-08-16jquery $.ajax相关用法分享
  • 2017-08-16详谈jQuery中的一些正则匹配表达式
  • 2017-08-16jQuery浏览器CSS3特写兼容实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jQuery的context属性用法实例
    • jQuery中mouseover事件用法实例
    • jQuery中eq()方法用法实例
    • 跟我一起学JQuery插件开发
    • jQuery简单实现title提示效果示例
    • jquery.gridrotator实现响应式图片展示画廊效果
    • jQuery实现倒计时(倒计时年月日可自己输入)
    • jQuery EasyUI API 中文文档 - Spinner微调器使用
    • jQuery 选择表格(table)里的行和列及改变简单样式
    • jQuery鼠标事件汇总

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有