- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
15.JS运动基础-1
运动:让物体动起来
让DIV动起来(匀速运动)
对定时器的使用
给div加绝对定位
offsetLeft
问题:到达某个特定位置停下来
解决:做判断,符合条件时关掉定时器(存定时器timer)
速度变慢(一般不动时间,而是改数字—速度)
用变量存速度
问题:取7时,offsetLeft没有等于300的时候,div停不下来
解决:=300 //停在301
问题:到300后点击按钮还继续走
原因:点按钮,执行函数,开定时器(执行当前函数—至少执行一次)
解决:加else(没有到达目标之前才执行)
问题:连续点击,速度变快
原因:每点击一次就开一个定时器,点击几次就有几个定时器同时工作
解决:保证每次只有一个定时器工作,先clearInterval()
运动框架类似吃饭框架
原则:1.开始运动时关闭原有定时器 2.把运动和停止分开(if/else)
运动框架实例
“分享到”侧边栏
div绝对定位,收在里面—left:-150px;span绝对定位
鼠标移入,速度10,终点0
鼠标移出,速度-10,终点-150
优化合并:最大区别:目标不同,速度不同——传参
继续简化:功能一模一样,参数越少越好——干掉速度
做法:通过当前位置和目标点的关系
if(iDiv.offsetLeftiTarget)
{
speed=-10
}
else
{
speed=10
}
淡入淡出图片
动的是透明度
透明度IE——filter:alpha(opacity:30)
chrome——opacity:0.3
var alpha=30 //单纯的变量,不是透明度
把变量alpha赋给透明度
oDiv.style.filter=‘alpha(opacity:‘+alpha+’)’;
oDiv.style.opacity=alpha/100;
16.JS运动基础-2
缓冲运动
逐渐变慢,最后停止
距离越远速度越大
速度有距离决定
速度=(目标值-当前值)/缩放系数
如果没有缩放系数,速度太大,瞬间到达终点,没有过程
问题:并没有真正到达300
原因:速度只剩0.9 //像素是屏幕能够显示的最小单位,并不会四舍五入,直接舍掉
Math.ceil()向上取整
Math.floor()向下取整
问题:向左走,又差一块——Math.floor()
判断:三目 speed=speed0?Math.ceil(speed):Math.floor(speed)
例子:右侧悬浮框
scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
问题:抖动
解决:用运动缓缓过去,缓冲运动
对联悬浮框
计算高度
问题:抖动
原因:目标点不是整数
解决:parseInt()
匀速运动的停止条件
问题:抖动
原因:没法精确到100
绝对值Math.abs()
不足7个,关闭定时器,left等于目标点(两点重合)
17.JS运动应用-1
多物体运动框架:多个div,鼠标移入变宽
运动框架传参obj,知道让哪个物体动起来
用到缓冲一定要取整
问题:div没运动回去 //清除前一个定时器
原因:只有一个定时器
解决:加物体上的定时器,使每个物体都有一个定时器。定时器作为物体属性
多个div淡入淡出
首先关闭物体上的定时器
问题:不是因为定时器,而是因为alpha
经验:多物体运动框架所有东西都不能共用
解决:作为属性加到物体上 //不以变量形式存在
offset的bug
加border变宽
offsetWith并不是真正的width,它获取的是盒模型尺寸
解决:躲着 宽度扔到行间,parseInt(oDiv.style.width)
进一步解决:getStyle(obj,name) currentStyle,getComputedStyle
加border,只要offset就有问题
去掉offset
合并框架
变宽和变高
[‘height’]
给运动框架加个参数attr
更神奇:变文字大小、变borderWidth
任意值运动框架
问题:最常用运动做不了,透明度
原因:parseInt(),opacity是小数、px
判断
var cur=0
if(attr==‘opacity‘)
{
cur=parseFloat(getStyle(obj,attr))*100
}
else
{
}
设置样式判断
if(attr==‘opacity‘)
{
obj.style.filter=‘alpha(
您可能关注的文档
最近下载
- 2022年11月26日四川省属事业单位联考《综合知识》真题.pdf VIP
- 2022年6月18日四川省事业单位联考《综合知识》试卷试题真题答案解析.doc VIP
- 《房屋建筑制图统一标准》GB50001-2010.pdf
- 2022年5月22日四川成都市属事业单位招聘考试《公共基础知识》真题(含答案).pdf VIP
- 二零二三年4月9日四川省事业单位联考《综合知识》精选题.pdf VIP
- 新股骨颈骨折病人的护理ppt课件.ppt
- 2023年10月29日四川省事业单位联考《综合知识》试题及答案解析.pdf VIP
- 2025至2030全球及中国门窗制造商行业项目调研及市场前景预测评估报告.docx
- 风电项目考察报告编制模板.docx VIP
- 肝癌患者生命质量测定量表.pdf VIP
原创力文档


文档评论(0)