Jquery 仅显示选定的图像+';悬停移动效果';

Jquery 仅显示选定的图像+';悬停移动效果';,jquery,html,css,image,hover,Jquery,Html,Css,Image,Hover,我正在尝试创建一个这样的网站 网站展示只是大图像的一部分,当您将鼠标移到图像上时,您可以移动图像(鼠标向左->图片向右移动) 最好的方法是什么?我可能还想在两张图片之间切换 根据你的回答,你说 提供了您想要的确切功能。基于该站点,这是他们用来维护该站点的代码 // enable the zoominess if( image.originalWidth > wrapperWidth ){ $(settings.activeImageId).width(wrapperWidth)

我正在尝试创建一个这样的网站

网站展示只是大图像的一部分,当您将鼠标移到图像上时,您可以移动图像(鼠标向左->图片向右移动)


最好的方法是什么?我可能还想在两张图片之间切换

根据你的回答,你说

提供了您想要的确切功能。基于该站点,这是他们用来维护该站点的代码

// enable the zoominess
  if( image.originalWidth > wrapperWidth ){
    $(settings.activeImageId).width(wrapperWidth).height(wrapperHeight).hover(function(){
      // zoom in
      $(this).addClass('zoomed').width(image.originalWidth).height(image.originalHeight);
      $activeWrapper.mousemove( function(e){
        var localX = ~~(((e.pageX - $activeWrapper.offset().left)/wrapperWidth) * 100);
        var localY = ~~(((e.pageY - $activeWrapper.offset().top)/wrapperHeight) * 100);
        if( localY > 100 ){ localY = 100; }
        var fromLeft = (image.originalWidth - wrapperWidth) * localX/100;
        var fromTop = (image.originalHeight - wrapperHeight) * localY/100;
        //console.log( fromLeft,' :: ', fromTop);
        $(settings.activeImageId).css('left', -fromLeft+'px').css('top', -fromTop+'px');
      });
    },
    function(){
      // zoom out
      $(this).removeClass('zoomed').width(wrapperWidth).height(wrapperHeight);
      $activeWrapper.unbind('mousemove');
    });
  }
} 
他们使用:

#active-wrapper .zoomed {
  left: 0;
  position: absolute;
  top: 0;
}

控制元素的位置。

根据您的回答,您说过

提供了您想要的确切功能。基于该站点,这是他们用来维护该站点的代码

// enable the zoominess
  if( image.originalWidth > wrapperWidth ){
    $(settings.activeImageId).width(wrapperWidth).height(wrapperHeight).hover(function(){
      // zoom in
      $(this).addClass('zoomed').width(image.originalWidth).height(image.originalHeight);
      $activeWrapper.mousemove( function(e){
        var localX = ~~(((e.pageX - $activeWrapper.offset().left)/wrapperWidth) * 100);
        var localY = ~~(((e.pageY - $activeWrapper.offset().top)/wrapperHeight) * 100);
        if( localY > 100 ){ localY = 100; }
        var fromLeft = (image.originalWidth - wrapperWidth) * localX/100;
        var fromTop = (image.originalHeight - wrapperHeight) * localY/100;
        //console.log( fromLeft,' :: ', fromTop);
        $(settings.activeImageId).css('left', -fromLeft+'px').css('top', -fromTop+'px');
      });
    },
    function(){
      // zoom out
      $(this).removeClass('zoomed').width(wrapperWidth).height(wrapperHeight);
      $activeWrapper.unbind('mousemove');
    });
  }
} 
他们使用:

#active-wrapper .zoomed {
  left: 0;
  position: absolute;
  top: 0;
}

控制元素的位置。

我建议使用jQuery UI插件并利用draggable()。然后使用不透明度、z索引和淡色技术来实现您想要的效果。无论您做什么,都不要对此解决方案使用动画功能。我会在你睡梦中找到你。编辑后提供demo/docs@Ohgodwhy的链接:这一定是我在这个网站上见过的给出建议的最不祥的方式…“在他睡觉的时候找到他”。。。现在我害怕睡觉=/对我会在他睡觉的时候找到他。唤醒他;强迫他改变他的方法!我也会带咖啡,但要无咖啡因的。邪恶的笑声。每次移动时,都必须计算一个新动画。jQuery有一个名为“step”的函数,用于计算在预期位置结束所需的时间。每次调用此函数时,计算它需要17毫秒。必须多次调用Animate才能移动到“鼠标位置”。避免这种情况的唯一方法是只允许遍历“X”数量的像素,而不允许动态involment。不过,在这一点上,这基本上会变成一个“幻灯片”,我建议使用jQuery UI插件并利用draggable()。然后使用不透明度、z索引和淡色技术来实现您想要的效果。无论您做什么,都不要对此解决方案使用动画功能。我会在你睡梦中找到你。编辑后提供demo/docs@Ohgodwhy的链接:这一定是我在这个网站上见过的给出建议的最不祥的方式…“在他睡觉的时候找到他”。。。现在我害怕睡觉=/对我会在他睡觉的时候找到他。唤醒他;强迫他改变他的方法!我也会带咖啡,但要无咖啡因的。邪恶的笑声。每次移动时,都必须计算一个新动画。jQuery有一个名为“step”的函数,用于计算在预期位置结束所需的时间。每次调用此函数时,计算它需要17毫秒。必须多次调用Animate才能移动到“鼠标位置”。避免这种情况的唯一方法是只允许遍历“X”数量的像素,而不允许动态involment。不过,在那一点上,这基本上会变成一个“幻灯片”,老实说?我不知道。我知道~是一个按位运算符,它将位反转。~~所做的超出了我的范围。对不起,布罗姆,真的吗?我不知道。我知道~是一个按位运算符,它将位反转。~~所做的超出了我的范围。对不起,布罗姆。