直截了当地说:
我有一个容器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文档,但似乎我无法解决这个问题。 有什么想法吗?
答案 0 :(得分:1)
你有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示例,我们可以看一下它的排序。