今天研究了一下jquery plugin --image magnifier 放大器。

原理其实很简单,首先你需要一个大图一个小图(或者是一个图),当在小图中移动,计算位差,把这个位差对应到大图上。

当然你还可以隐藏鼠标。

研究结果如下:

/*

//example
$('selector').loupe({
  width: 200, // width of magnifier
  height: 150, // height of magnifier
  loupe: 'loupe' // css class for magnifier
});

<a id="demo-1" href="bigimage.jpg">
  <img src="smallimage.jpg" />
</a>

$('#demo-1').loupe();

.loupe {
    cursor: url("blank.png"), url("blank.cur"), none;
}
*/

/**
 * loupe - an image magnifier for jQuery
 * (C) 2010 jdbartlett, MIT license
 * http://github.com/jdbartlett/loupe
 */
(function ($) {
    $.fn.loupe = function (arg) {
        var options = $.extend({
            loupe: 'loupe',
            width: 200,
            height: 150
        }, arg || {});

return this.length ? this.each(function () {
            var $this = $(this),
                $big, $loupe, $small = $this.is('img') ? $this : $this.find('img:first'),
                move, hide = function () {
                    $loupe.hide();
                },
                time;

if ($this.data('loupe') != null) {
                return $this.data('loupe', arg);
            }

move = function (e) {
                var os = $small.offset(),
                    sW = $small.outerWidth(),
                    sH = $small.outerHeight(),
                    oW = options.width / 2,
                    oH = options.height / 2;

//判断是否越界
                if (!$this.data('loupe') || e.pageX > sW + os.left + 10 || e.pageX < os.left - 10 || e.pageY > sH + os.top + 10 || e.pageY < os.top - 10) {
                    return hide();
                }

time = time ? clearTimeout(time) : 0;

//移动container
                $loupe.show().css({
                    left: e.pageX - oW,
                    top: e.pageY - oH
                });
                //移动大图片
                $big.css({
                    left: -(((e.pageX - os.left) / sW) * $big.width() - oW) | 0,
                    top: -(((e.pageY - os.top) / sH) * $big.height() - oH) | 0
                });
            };

//新建大图片的container
            $loupe = $('<div />').addClass(options.loupe).css({
                width: options.width,
                height: options.height,
                position: 'absolute',
                overflow: 'hidden'
            }).append($big = $('<img />').attr('src', $this.attr($this.is('img') ? 'src' : 'href')).css('position', 'absolute')).mousemove(move).hide().appendTo('body');

$this.data('loupe', true).mouseenter(move).mouseout(function () {
                time = setTimeout(hide, 10);
            });
        }) : this;
    };

}(jQuery));

出处:

jquery magnifier http://jdbartlett.com/loupe/ 
or

http://www.dailycoding.com/Posts/imagelens__a_jquery_plugin_for_lens_effect_image_zooming.aspx

jquery plugin --image magnifier 放大器相关推荐

  1. Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode

    Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode Element DOM Tree jQuery pl ...

  2. html5 jquery paint plugin,制作高质量的JQuery Plugin 插件的方法

    JQuery Plugin插件,如果大家不明白什么是JQuery插件或都不清楚如何编写可以查看其官方的网站:jQuery Authoring Guidelines 好了,下面有一些我觉得想做一个好的插 ...

  3. jQuery 对话框 jQuery.plugin

    jQuery 对话框 jQuery.plugin 强烈推荐对话框插件jquery.weebox.js,本站开源账务管理系统中使用的对话框组件,各种形式的对话框:确认.成功.警告.错误等 ---- 如下 ...

  4. jquery --- Poshy Tip jQuery Plugin

    2019独角兽企业重金招聘Python工程师标准>>> 作为一个抄袭者---从抄袭开始 jquery我无比的爱你啊 提示的插件:Poshy Tip jQuery Plugin 下载地 ...

  5. jQuery ui widget和jQuery plugin的实现原理简单比较

    一.创建 1.  jQuery plugin (function($){ $.fn.MyPlugin=function(){ //js代码 } })(jQuery) 为了与页面上其他代码友好相处,将p ...

  6. Signs of a poorly written jQuery plugin 翻译 (Jquery插件开发注意事项,Jquey官方推荐)

    原文链接:http://remysharp.com/2010/06/03/signs-of-a-poorly-written-jquery-plugin/ 原文作者:remy sharp So far ...

  7. Jquery plugin template POPUP Plugin

    以一个popup 的例子,学习怎么写jquery插件.插件 实例化时候 包括传属性,函数.类似jqueryUI 的使用感觉. 实现效果类似 android 的 toast 的效果. 显示提示消息,过几 ...

  8. JavaScript text highlighting JQuery plugin

    介绍一个JQuery的插件,用来在页面上高亮显示匹配到的字符串. Demo 点击下面的两个链接以查看效果: highlight javascript 点击Remove highlights移除高亮显示 ...

  9. jQuery plugin 开发的一个例子

    测试代码: <html> <script src="jquery_1.7.1.js"> </script> <script>jQue ...

最新文章

  1. 如何提高强化学习效果?内在奖励和辅助任务
  2. service层自定义异常事物回滚
  3. 使用免费的云服务 AWS EC2
  4. “AI捡垃圾”上热搜了!46城垃圾分类将投200亿,你怎么看?
  5. nginx之worker进程个数
  6. 惯性制导精度是多少_美军激光炸弹真实精度性能:炸小卡车,直接从驾驶员车窗钻进去炸...
  7. Linux修改文件/文件夹权限
  8. c语言写16进制转2进制,[求助]如何实现16进制转2进制
  9. (面试)涉及到继承和类加载
  10. iOS框架引见--媒体层
  11. ios 隔空投安装ipa_iOS App 在线安装 .IPA文件
  12. 怎么离线发布全国谷歌高清卫星影像地图瓦片
  13. python鼠标监听_用Python监听鼠标和键盘事件
  14. 对抗生成网络代码Generative Adversarial Networks (GANs),Vanilla GAN,Deeply Convolutional GANs
  15. linux安装trac+svn+apache+wike,搭建apache+svn+trac平台
  16. 看士兵突击 一、二集有感--------是单纯 OR 笨?
  17. 计算机网络(十二)IPv6介绍
  18. PDF怎么转成PPT?六种PDF转PPT的简单方法,轻松解决!
  19. Since your iTunes Connect status is Metadata Rejected, we do NOT require a new binar被拒原因总结
  20. 初学者对PHP的总结,PHP初学者总结

热门文章

  1. 修改cmd命令行窗口的颜色
  2. 浅谈802.15.4协议
  3. linux存储群组名称的文件是,群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册...
  4. 基于springboot的化妆品美妆销售商城网站
  5. 数据结构(三)打印二叉树中结点层次遍历序列的实现
  6. 女人本性的47个心理阴暗面 承受力差的谨慎阅读
  7. 2022年R1快开门式压力容器操作考试练习题及模拟考试
  8. 关于地下管线探测技术发展的思考
  9. BZOJ 4811([Ynoi2017]由乃的OJ-树链剖分)
  10. Mybatis中#和$的区别