【发布时间】:2017-11-13 01:16:38
【问题描述】:
我正在尝试构建一个简单的网络元素,类似于参赛者在 The Price is Right (sample video) 上旋转的轮子。我的问题是:有没有比我在下面拼凑出来的更有效的方法来实现这种效果?
我对这个功能的第一次尝试基本上是减少包含要旋转的元素的元素的translateY 属性 [codepen]:
setInterval(shiftCards, 100)
var translateY = -60,
cardIdx = 0,
startCards = 60,
wrap = document.querySelector('.wrap');
for (var i=0; i<startCards; i++) {
addCard()
}
function addCard() {
var div = document.createElement('div');
div.className = 'card';
div.style.top = (cardIdx * 12) + 'px';
wrap.appendChild(div);
cardIdx++;
}
function shiftCards() {
wrap.style.transform = 'translateY(' + translateY + 'px)';
translateY -= 12;
var cards = wrap.querySelectorAll('.card');
if (cards.length >= startCards) {
cards[0].parentNode.removeChild(cards[0]);
addCard();
}
}
.cards {
width: 80px;
height: 200px;
overflow: hidden;
background: #aaa;
}
.wrap {
position: relative;
transition: transform .25s;
}
.card {
width: 100%;
height: 10px;
margin: 2px 0;
background: red;
position: absolute;
left: 0;
right: 0;
}
<div class='cards'>
<div class='wrap'>
</div>
</div>
有没有更有效的方法来实现这个功能?我可以创建一个有 n 个子元素的元素,并且实际上只是在 Z 维度上旋转它们,而不是像我上面所做的那样创建一个人工旋转吗?其他人可以就这个问题提供的任何指导将不胜感激!
【问题讨论】:
-
@klugjo 我没看过,但这是完美的。非常感谢您的参考!
-
@klugjo 如果你的回复是一个答案,我会接受——这真的很棒
标签: javascript html css translation