Обобщая мою функцию
Я написал эту функцию, которая изменяет размер элемента на выбранный угол
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);
}
2 ответа
Это то, что вы хотите?
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);
}
Вместо того, чтобы передавать как startSize, так и endSize, вы можете попробовать передать только разницу между значениями, будь то положительная (в одном случае) и отрицательная (в другом случае). Затем удалите существующий блок if else и измените код так, чтобы он работал с "разницей", а не с startSize и endSize.