((speed < 0 && parseInt(list.style.left) > newLeft) || (speed > 0 && parseInt(list.style.left) < newLeft))這是什么意思
window.onload = function(){
var container = document.getElementById('container');
var list = document.getElementById('list');
var buttons = document.getElementById('buttons').getElementsByTagName('span');
var prev = document.getElementById('prev');
var next = document.getElementById('next');
var index = 1;
function showButton(){
for (var i = 0; i < buttons.length; i++) {
if(buttons[i].className == 'on'){
buttons[i].className = '';
break;
}
}
buttons[index - 1].className = 'on';
}
function animate(offset){
var newLeft =? parseInt(list.style.left) + offset;
var time = 300;
var interval = 10;
var speed = offset/(time/interval);
function go(){
if((speed < 0 && parseInt(list.style.left) > newLeft) || (speed > 0 && parseInt(list.style.left) < newLeft)){
list.style.left = parseInt(list.style.left) + speed + 'px';
setTimeout(go, interval);
}else {
list.style.left = newLeft + 'px';
if (newLeft < -3000) {
list.style.left = -600 +'px';
}else if(newLeft > -600){
list.style.left = -3000 +'px';
}
}
}
go();
}
next.onclick = function(){
if(index == 5){
index = 1;
}else {
index += 1;
}
showButton();
animate(-600);
}
prev.onclick = function(){
if(index == 1){
index = 5;
}else {
index -= 1;
}
showButton();
animate(600);
}
for(var i = 0; i < buttons.length ; i++){
buttons[i].onclick = function(){
if(this.className == 'on'){
return;
}
var myIndex = parseInt(this.getAttribute('index'));
var offset = -600 * (myIndex - index);
animate(offset);
index = myIndex;
showButton();
}
}
2019-12-16
我是看了好幾遍視頻才勉強(qiáng)搞明白什么意思,這么給你解釋吧:
看上面這個(gè)數(shù)軸:
首先speed為負(fù)的時(shí)候,為向左進(jìn)行位移,這個(gè)應(yīng)該不會(huì)有問題吧。然后你想,向左進(jìn)行位移是想達(dá)到什么目的呢?肯定是想讓位移后的位置跑到位移前位置的左邊,也就是說在進(jìn)行位移之前,需要滿足位移前的位置在數(shù)軸上要在位移后的位置的右邊,即parseInt(list.style.left)>newLeft,這么說應(yīng)該就可以懂了吧。
如果懂了,那么想右位移的情況應(yīng)該也就不難理解了
2019-07-01
就是向左運(yùn)動(dòng)時(shí) 算出來的speed是負(fù)值, 并且目前的left值比目標(biāo)值小或者大 (其實(shí)就是沒有到大目的位置的時(shí)候),然后每10毫秒給當(dāng)前l(fā)eft值加一個(gè)speed 直至當(dāng)前l(fā)eft值和目標(biāo)值相等,跳出if 加speed的部分 ;一次動(dòng)畫執(zhí)行結(jié)束。?