我需要在Javascript中以固定增量增加一个框大小,但也要保持方形大小。我认为应该有一个简单的'数学函数,但我无法弄明白。我尝试使用pow()
和sqrt()
以及if if语句,但似乎没有什么可行的。
示例: 假设我有一个(WxH)54 x 45的盒子,我的增量是10,我想增加高度(用一个按钮)。正常增量为10时,高度将变为55,但我希望它首先返回值54,因此框变为方形。一旦它54,我再次增加高度,它应该再次继续55.
宽高比并不重要。
我希望有人可以帮助我,或者至少指出我正确的方向。谢谢!
答案 0 :(得分:1)
pow
,sqrt
和喜欢的人不会帮助你,你只需做一个特例。像这样:
var step = 10, squareCase = null;
function increaseWidth() {
if (squareCase !== null) { // we are currently at the square case
width = squareCase + step; // resume from remembered
squareCase = null; // and leave the special case
}
else if (width < height && width + step > height) {
squareCase = width; // remember value so we can resume sequence
width = height; // do the square now
}
else {
width = width + step; // default case
}
}
在编写相应的递减时,请记住squareCase
变量包含值 previous 以递增,因此它应包含递减情况下已经递减的值。
答案 1 :(得分:0)
这不是你的要求,但看起来应该是这样的:
var boxGetter = function(w, h){
// anonymouse function setting the original width and height
return {
// get the new height
// pass in the new width
height: function(nw){
return (w / h) * nw;
},
width: function(nh){
return (h / w) * nh;
}
}
}
var getter = boxGetter(54, 45);
console.log(getter.height(54+10)); // 66
console.log(getter.width(45+10)); // 45.83