MooTools:抓住右下角

时间:2012-02-01 18:44:10

标签: javascript mootools

直截了当地说:

我有一个容器div,它接收许多内联块元素。根据容器必须接收的元素数量,这些元素的大小因此遵循这些规则:

for(i=0; i<elements.length;i++){
     switch (number of elements){
          case 1: elements[i].width=100%; break;
          case 2: elements[i].width=50%; break;
          case 3: elements[i].width=33.3%; break;
          case 4:if(i<3){elements[i].width=33.3%;}else{elements[i].width=100%;}break;
          case 5:if(i<3){elements[i].width=33.3%;}else{elements[i].width=50%;}break;
          case 6:elements[i].width=33.3%;break;
     }
}

而且,目前,容器在顶部抓取(MooTools .grab(元素,'top')方法)。

所以我有这个: http://i.stack.imgur.com/gq4T0.png

但我想要的是: http://i.stack.imgur.com/eTrTp.png

因此,为了非常简洁,我希望将元素添加到右下角的容器中,并将其他元素向上推容器,这是为什么我不能简单地使用.grab(元素,'底部')。

我已经在脑子里转了两天,看了所有相关的MooTools文档,但似乎我无法解决这个问题。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

呃,取决于你做了什么,但看到你没有发布一个DOM或你的注入代码,这里有一个可用的概述。

你有3个钩子移动/改变父节点:

注射

element.inject(target, 'bottom|top|after|before')

采用

parent.adopt(element)

parent.grab(element, 'bottom|top|after|before')

他们相同的事情。您未能显示实际注入是如何发生的,但您的循环是从el#1到最后一个,因此每个连续元素 - 默认情况下 - 将返回到底部。

你只需通过以下方式做到:

element.inject(cellElement) - 默认情况下会返回到底部,因此按循环顺序执行1,2,3,4,5,6。添加'top'作为参数来反转它,或者如果你做了while(lengthVar--) {},你可以反转它。我建议使用Array.each来循环元素(或Elements.each,如果需要的话,它还可以为您提供索引处理)

您也可以使用element.inject(cell.getLast(), "before")或遵循您认为合适的索引。发布更多代码或更好的代码,创建一个http://jsfiddle.net示例,我们可以看一下它的排序。