2012-11-05 79 views
4

我正在使用jQuery UI來調整元素的大小。 我有一個元素應該可以調整到最大寬度。 1200像素或1600像素(如用戶喜歡)。但是當這個元素之前有元素(我將所有元素水平排列)時,如果鼠標光標到達屏幕的末端,則調整大小操作將停止。調整大小:調整元素的大小超出屏幕末端

你可以在這裏進行測試:http://gopeter.de/clients/dustin/

非常右邊框是調整大小。

有沒有人有任何想法,我可以防止這種情況? 我應該檢查光標位置並在到達結束時擴展元素嗎?或者還有其他技術嗎?

+0

我猜遊標不能出現在屏幕之外,不管你做什麼,除非我錯過了重要的東西? – adeneo

+0

確保光標不能超出屏幕。但是如果要將元素的大小調整爲比屏幕更大的尺寸,我會遇到麻煩。我認爲這與像Mac OS X Finder這樣的常規軟件中的可拖動操作是一樣的現象:當您將鼠標光標移動到屏幕頂部時,您可以將元素拖動到頂部,大型列表將開始滾動,所以您可以達到最高。 – Slevin

回答

2

也許你可能只是調整身體和滾動允許連續調整大小:

var body = $('body'); 

$('#resize').resizable({ 
    handles: "e,s,se", 
    resize: function (event, ui) { 
     var width = body.width(), 
      diff = width - (width - (this.offsetLeft + this.offsetWidth)); 

     body.width(diff).scrollLeft(diff); 
    } 
}); 

或(更小的jQuery)

$('#resize').resizable({ 
    handles: "e,s,se", 
    resize: function (event, ui) { 
     var width = document.body.clientWidth, 
      diff = width - (width - (this.offsetLeft + this.offsetWidth)); 
     document.body.style.width = diff + 'px'; 
     document.body.scrollLeft = diff; 
    } 
}); 

下面是相關的小提琴:http://jsfiddle.net/jeff_mccoy/UpmNq/2/

注意你可以作爲一個例子,通過僅調整每X個像素(!diff%3)的大小來加速這一點,但它在調整大小時也會有點生澀。

+1

偉大的解決方案!您將在15小時內獲得賞金(導致堆棧溢出限制)。 – Slevin

1

可能是最好把大小調整手柄放在左邊。

+0

這是一個很好的答案,我會爲你效勞,其他人肯定也會。 – adeneo

+0

...並且當用戶的屏幕分辨率爲1366x768,並且該框應該是1600px寬?對不起,我說在我的問題1200px,這是一個示例值... – Slevin