居中多个项目

时间:2013-03-24 14:52:28

标签: javascript algorithm

在我的应用中,我有一堆矩形。

enter image description here

我试图在屏幕上水平居中所有这些矩形。 (中心是screen_width / 2)

到目前为止,这是我的代码(为了您的观看乐趣),

            for (var j=0;j<rectangles.length;j++){
                rectangle=rectangles[j];
                                    var margin=120;
                var coefficent=0;
                var center_index=Math.ceil(rectangles.length/2);
                if (j>center_index){
                     coefficent=1;
                }else if (j<center_index){
                    coefficent=-1;
                }


                var x=(screen.width-rectangle.width)/2+j*margin*coefficent;
                rectangle.SetX(x);

                }

此代码将所有内容置于中心(不是很酷)。

对此问题的任何帮助都将非常感激。

编辑:

抱歉不清楚,

另一张图像更清晰(线条,是中心线):

enter image description here

所以你可以看到,我们正在移动所有的矩形,以便中间的矩形位于中心。

就像按下中心按钮在Word文档上水平居中文字一样,我试图用矩形来做这件事。

2 个答案:

答案 0 :(得分:1)

不确定没有完整的代码(我建议jsfiddle)但似乎你使用center = width / 2超过2个矩形。如果你有3个矩形,使用绝对中心位置将无法正常工作。我建议通过将宽度除以矩形的数量来居中,然后将其用作每个矩形的中心点,即(未经测试的伪代码,因为我没有完整的代码。我还添加了一些不需要的变量,如currentRectHalf宽度,试图让事情更清晰):

  var width=500; //fill in with your width
  var margin=120; //margin
  var numRectangles=rectangles.length; //from your example
  var offset=width/numRectangles;
  for(var i=0;i<numRectangles;i++) {
    currentRectHalfWidth=rectangle.width/2;
    currentCenter=(offset+1)*offset+margin-currentRectHalfWidth; //+1 because of zero index array
    rectangle.SetX(x);
  }

答案 1 :(得分:0)

看起来好像没有设置矩形的Y值。在代码的某处,你需要设置它们的Y值,使它们不在所有的中心。