这一课讲的逻辑非常混乱,并且有讲解错误的地方,如setTimeout 里面的 area.scrollTop++,并不是一直加1,而是只加1次,容易造成误导
2016-08-28
老师讲的有点复杂。我想这样可以实现的:设一个大的定时器,每个2秒执行一遍小定时器。小定时器里每50毫秒实现moveB.scrollTop+=1; 再执行判断:if(moveB.scrollTop%aheight==0){clearInterval(timer2);}
2016-08-26
理论上当li少到可以全部显示在可视界面的话,偏移时的scrollTop永远少于con1.scrollHeight。就达不到老师的判定条件:
if(moveB.scrollTop>=con1.scrollHeight){
moveB.scrollTop=0;
}else{
moveB.scrollTop+=1;
}
可以用console.log测试box.scrollTop和con.scrollHeight进行验证。
我觉得把添加子结点放在定时器内,让它不断地产生新子结点,达到滚动的目的挺好的。
if(moveB.scrollTop>=con1.scrollHeight){
moveB.scrollTop=0;
}else{
moveB.scrollTop+=1;
}
可以用console.log测试box.scrollTop和con.scrollHeight进行验证。
我觉得把添加子结点放在定时器内,让它不断地产生新子结点,达到滚动的目的挺好的。
2016-08-26
在判断scroll.scrollTop = 0事, if的条件是scroll.scrollTop==content.offsetHeight/2 ,为什么这里的offsetHeight除以2, 如果不除以2, 浏览器的效果时候,走完了content里的内容,但是呢,不在循环. 这会scollTop有关系, 当scorllTop滚到顶部,下面没有内容的时候,ScrollTop++是没有用的, 但是这个时候呢scroll.scrollTop!=content.offsetHeigh,就停止了. 为了scrollTop
==offsetHeigh,把offsetHeigh/2就可以无缝滚动了.
==offsetHeigh,把offsetHeigh/2就可以无缝滚动了.
2016-08-23
这种方式去实现无线滚动有一个缺点就是, 不同的浏览器对scrollTop理解不同,兼容性很差, 效果不好,会跳一下.就是字还没有走完, scrollTop就等于offsetHeight, 就赋值scrollTop为0了,效果不是很理想. 建议用jquery的方法来实现. 里面有解决浏览器兼容性的问题
2016-08-23
老师特别喜欢用setTime(), setInterval()这两个循环调用的方法, 他们循环的方式有点不一样的, 这里不做介绍,大家可以去百度. 当代码执行到 setTime(), setInterval()时,会不会马上执行他们中的函数里,不会,js在这里会在这里做下标记,放学后你等着. 继续执行后面的代码,为什么这里没有马上执行setTime()中的方法,因为在写的时候setTime(fun,time),这里写的是fun,不是fun(),写fun()后就是调用函数,会马上调用函数,这里setTime()不允许这样,写fun,就是函数名, 函数名是函数的指针,在time循环后调用这个函数.
2016-08-23
这里说下文中的一个地方,有点奇怪, setInterval("fun()",time),为什么这里要给fun()加括号呢, 加引号后, JS会自动的调用eval()方法,然后eval()来执行这个方法fun(). JS定义setInterval(fun,time),这里的fun不是调用函数本身, 是指向函数的指针,然后在隔time时间后找到函数的物理位置并执行它. 或者用代码串的方式setInterval("scroll()",time),记住这里的代码串要加(),加空号是为了让eval()执行它. 不同的写法, 结果是相同的.
2016-08-23
说下这里的scrollTop(),滚动条相对于其顶部的偏移, 就是滚动条向上移动,相对div的顶部偏移.当内容刚刚好偏移出这个div的显示区域的时候,这个scollTop就等于div中内容的offsetHeight. 这里要给这个div加上overflow:hidden; 同样的, 也是给他设置scollTop(),让他内容向上滚. 不是它自己滚动. 在不同的浏览器中滚动多少也不一样,比如你设置的是滚动10px, chrome滚动了12px, 火狐滚动了15px,实际的效果有所差别. IE版本没有测试过,不做评论
2016-08-22