2011-08-25 63 views

回答

2

看起來腳本阻止給topleft值小於0,如果將邏輯更改爲允許val UE的< 0你應該得到一個集中變焦...

更改此

iTop = (iNewH < ipH ? (ipH/2) - (iNewH/2) : 0); 
iLeft = (iNewW < ipW ? (ipW/2) - (iNewW/2) : 0); 

對此

iTop = (ipH/2) - (iNewH/2); 
iLeft = (ipW/2) - (iNewW/2); 

編輯:

允許滾動的所有部分圖像(即沒有負面定位)你可以使用ScrollTo jquery插件

example fiddle

if (iNewH > $container.height() || iNewW > $container.width()) { 
    $container.scrollTo({ 
     top:(iNewH - $container.height())/2, 
     left:(iNewW - $container.width())/2 
    }); 
} 

可能會考慮改變上述邏輯來分別處理高/寬,我會留給你。

+0

但我不希望圖像通過負向頂部和左側切斷。滾動條應移動到必要的位置以使其位於框架的中心。 – sadmicrowave

+0

更新我的回答 – MikeM

+0

好主意,但我實現了它,它仍然沒有滾動到所需的位置。 – sadmicrowave

1

這裏是一個小提琴:http://jsfiddle.net/maniator/jhDhM/

它可能需要一些調整。

這裏是小提琴的js代碼:

var zoomFactor = 1; 

$('#container img').click(function(e) { 

    var iScaler = 1.5, 
     iH = $(this).height(), 
     iW = $(this).width(), 
     iNewH = iH * iScaler, 
     iNewW = iW * iScaler, 
     $parent = $(this).parent(), 
     zoomPosX = (e.clientX - ($parent.width()/2))/zoomFactor, 
     zoomPosY = (e.clientY - ($parent.height()/2))/zoomFactor; 
    zoomFactor *= iScaler; 
    $(this).css({ 
     top: zoomPosY + 'px', 
     left: zoomPosX + 'px', 
     width: iNewW + 'px', 
     height: iNewH + 'px' 
    }); 

}); 

在您的版本:http://jsfiddle.net/maniator/RCw4T/10/

修復該小於大於混合了,你應該去正確中心所有的時間:-)