如何制作“facebook zoom”

时间:2011-03-09 22:18:49

标签: javascript jquery image-manipulation positioning photo

我正在创建一个网站,我喜欢这个谷歌Chrome扩展调用的功能Facebook Photo Zoom @ https://chrome.google.com/extensions/detail/elioihkkcdgakfbahdoddophfngopipi

我认为扩展背后的基本理念是当您将鼠标悬停在缩略图上时,它会抓取原始图像文件并以完整视图显示它。如果图像太大,则它将位于窗口的角落或顶部和底部条上。如果它不是太大,它将浮动在鼠标位置旁边。

我理解它背后的逻辑,但实际编码似乎有点令人生畏。我想它的唯一部分我不明白你是如何编码扩展图像的位置,并使你的鼠标向左/右移动时收缩/扩展。感谢

4 个答案:

答案 0 :(得分:0)

13 zoom jquery plugins in here。选择最符合您需求的产品:)

答案 1 :(得分:0)

查看此preview image工具提示,该工具提示与Chrome扩展程序的工具提示类似,但您必须为缩略图和完整尺寸的图片提供网址。这是原始blog post


我修改了脚本以调整图像大小以适应光标和右浏览器边缘之间的距离。它并不完美,但它确实有效。这是demo

/*
 * Image preview script
 * powered by jQuery (http://www.jquery.com)
 *
 * written by Alen Grakalic (http://cssglobe.com)
 *
 * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery
 *
 */

this.imagePreview = function(){
    /* CONFIG */

        xOffset = 10;
        yOffset = 20;

        // these 2 variable determine popup's distance from the cursor
        // you might want to adjust to get the right result

    /* END CONFIG */
    $('a.preview').hover(function(e){
        this.t = this.title;
        this.title = '';
        var p, c = (this.t != '') ? '<br/>' + this.t : '';
        $('body').append('<p id="preview"><img src="' + this.href + '" alt="Image preview" />' + c + '</p>');

        // load image and get size
        p = $('#preview');
        p
            .fadeIn('fast')
            .find('img').load(function(){
                // get image dimensions after it has been loaded
                p.data('widths', [ $(window).width(), p.find('img').width() ]);
                // set image to 100% to fit in preview window
                $(this).width('100%');
                position(e);
            });
    },
    function(){
        this.title = this.t;
        $('#preview').remove();
    });

    $('a.preview').mousemove(function(e){
        position(e);
    });

    var position = function(e){
        var w, prevw = $('#preview'),
            w = $.data( prevw[0], 'widths' );
        if ( w ) {
            prevw
                .css('top', e.pageY + yOffset)
                .css('left', e.pageX + xOffset)
                .css('max-width', (e.pageX + prevw.outerWidth() > w[0]) ?  w[0] - e.pageX - xOffset : w[1] || 'auto' );
        }
    };

};

// starting the script on page load
$(document).ready(function(){
    imagePreview();
});

答案 2 :(得分:0)

mouseover上使用

创建大图像
css({position: 'absolute', left: e.pageX, top: e.pageY})
mousemove

以相同的方式更新左侧和顶部。

同时检查:

答案 3 :(得分:0)

请参阅http://www.ideabonus.com/Kabbar/index.html

处的Kabbar Image Zoomer