2014-11-09 40 views
0

我寫了這個功能,通過一選定角歸納我的功能

function RelativeCornerResizer(Elements , StartSize , EndSize , Unit , Left , Top) 
{ 
    //var I = StartSize ; 
    var SSpx = "" , LeftPx="" , TopPx=""; 

    LeftPx = (Left)+Unit; 
    TopPx = (Top)+Unit; 


    if(StartSize < EndSize) 
    {  
      StartSize+=2; 

      SSpx = StartSize+Unit; 

      if(Left!=0) LeftPx = (Left-StartSize)+Unit; 
      if(Top!=0) TopPx = (Top-StartSize)+Unit; 

      $(Elements).css({'width': SSpx,'height': SSpx}); 
      $(Elements).css({'left' : LeftPx , 'top' : TopPx}); 

      setTimeout(function(){RelativeCornerResizer(Elements , StartSize , EndSize , Unit , Left , Top)},1); 
    } 

} 

調整的元素現在這種調整隻有很少的元素,以更大的人,我想將它推廣到從大調整大小小,所以:

如果我的StartSize大於EndSize --->以小搏大 別的--->從小到大

一個簡單的,如果其他人可以從較小的變化環路往大了從小到大[... ]

有沒有一種方法不引入另一個參數的功能?




我修改由馬庫斯提出的解決方案,它的作品,但我還是不滿意......

function RelativeCornerResizer(Elements , StartSize , EndSize , Unit , Left , Top) 
{ 
    var SSpx = "" , LeftPx = "" , TopPx = "", Direction = StartSize < EndSize , Condition ; 

    LeftPx = (Left) + Unit; 
    TopPx = (Top) + Unit; 

    if (Direction) 
    { StartSize+=2; 
     Condition = StartSize < EndSize ; 
    } 
    else 
    { StartSize-=2; 
     Condition = StartSize > EndSize ; 
    } 

    SSpx = (StartSize) + Unit; 
    LeftDiff = Direction ? Left - StartSize : Left + StartSize; 
    TopDiff = Direction ? Top - StartSize : Top + StartSize; 

    if(Left!=0) LeftPx = (LeftDiff) + Unit; 
    if(Top!=0) TopPx = (TopDiff) + Unit; 

    $(Elements).css({'width': SSpx,'height': SSpx, 'left' : LeftPx , 'top' : TopPx}); 

    if(Condition) 
     setTimeout(function(){RelativeCornerResizer(Elements , StartSize , EndSize , Unit , Left , Top)},1); 
} 
+0

*「但我還是不滿意」* - 什麼?這意味着你的問題沒有明確的問題描述。順便說一句,「推廣我的功能」並不是真正的問題。 – 2014-11-09 09:26:33

回答

0

這是你想要的嗎?

function RelativeCornerResizer(Elements , StartSize , EndSize , Unit , Left , Top) 
{ 
    var SSpx = "" , LeftPx = "" , TopPx = "", Direction = StartSize < EndSize; 

    LeftPx = (Left) + Unit; 
    TopPx = (Top) + Unit; 

    if (Direction) Startsize += 2 else Startsize -= 2; 

    SSpx = (StartSize) + Unit; 
    LeftDiff = Direction ? Left - StartSiz : Left + StartSiz; 
    TopDiff = Direction ? Top - StartSiz : Top + StartSiz; 

    if(Left!=0) LeftPx = (LeftDiff) + Unit; 
    if(Top!=0) TopPx = (TopDiff) + Unit; 

    $(Elements).css({'width': SSpx,'height': SSpx, 'left' : LeftPx , 'top' : TopPx}); 

     setTimeout(function(){RelativeCornerResizer(Elements , StartSize , EndSize , Unit , Left , Top)},50); 

} 
+0

它不工作很好,去一種loopy ... 順便說一句,我不知道這種方式表達式 '方向= StartSize Hammond95 2014-11-09 03:43:56

+0

我沒有測試它,只是一個問題。 'StartSize 2014-11-09 03:47:55

+0

謝謝Markus :) – Hammond95 2014-11-09 03:50:45

0

而不是將兩者startSize和endSize,您可以嘗試僅傳遞值之間的差異,無論是正值(在一種情況下)還是負值(在其他情況下)。然後刪除現有的if else塊,並更改代碼以使用「差異」,而不是startSize和endSize。

+0

這可能是一個解決方案,但我希望不會推翻所有的東西:/ – Hammond95 2014-11-09 03:47:26