我需要克隆一个对象,我试图找到如何从mootools中检索类css属性
的CSS:
.card {
width: 109px;
height: 145px;
}
HTML:
<div id="cards">
<div class="card" id="c0">
<div class="face front"></div>
<div class="face back"></div>
</div>
</div>
JS:
window.addEvent('domready', function(){
Duplicacartes();
});
function Duplicacartes(){
var uiCards= document.getElementById('cards');
for(var i=1;i<521;i++)
{
var clone = $('c0').clone();
clone.set('id', 'c'+i);
clone.setStyle('left', (clone.getStyle('width') + 20) * (i % 40));
clone.setStyle('top', (clone.getStyle('height') + 20) * Math.floor(i / 40));
clone.inject('cards','bottom');
}
但我没有结果:
函数 clone.getStyle(),不是类CSS 属性,只有'元素'属性。 我尝试了很多方法而没有成功。
$('c'+i).getStyle('width');
$('c'+i).style.width;
...
这样做的方法是什么?感谢
答案 0 :(得分:1)
我认为您无法从克隆元素中获取该内容,但您可以从原始内容中复制该内容并使用.getComputedSize(),如下所示:
var computed = $('c0').getComputedSize();
所以你的功能可能如下:
window.addEvent('domready', function () {
Duplicacartes();
});
function Duplicacartes() {
var uiCards = document.getElementById('cards');
var computed = $('c0').getComputedSize();
for (var i = 1; i < 521; i++) {
var clone = $('c0').clone();
clone.set('id', 'c' + i);
clone.setStyle('left', (computed.width + 20) * (i % 40));
clone.setStyle('top', (computed.height + 20) * Math.floor(i / 40));
clone.inject('cards', 'bottom');
}
}
注意:强>
- 我还在{c.1}添加了position:absolute;
- .getComputedSize()
是 更多 的一部分,因此您还需要加载 更多 。
答案 1 :(得分:0)
GetStyle()
将元素的css属性返回为string
(在这种情况下,将width
作为"300px"
返回)。由于数学公式不正确并返回NaN(“非数字”值),因此MooTools不会设置left
和top
css样式。
因此,width
和height
属性应转换为toInt()
函数的整数:
clone.getStyle('width').toInt()
由于创建了大量元素,因此需要对脚本进行一些优化,例如不保存克隆元素的引用,而且只需要克隆一次元素就足够了。
window.addEvent('domready', function(){;
Duplicacartes();
});
function Duplicacartes() {
var card = $('c0');
for ( var i=1; i<521; i++ ) {
card.clone().set({
id: 'c'+i,
styles: {
left: (card.getStyle('width').toInt() + 20) * (i % 40),
top: (card.getStyle('height').toInt() + 20) * Math.floor(i / 40)
}
}).inject( 'cards', 'bottom' );
}
}