您的位置: 首页 > 技术文档 > 网页制作 > 仿Apple滑动条(拖动)产品展示效果
JavaScript Tween算法及缓动效果 回到列表 border-radius与圆角
 仿Apple滑动条(拖动)产品展示效果

作者:cloudgamer 时间: 2009-01-09 文档类型:原创 来自:蓝色理想

第 1 页 仿Apple滑动条(拖动)产品展示效果 [1]
第 2 页 仿Apple滑动条(拖动)产品展示效果 [2]
第 3 页 仿Apple滑动条(拖动)产品展示效果 [3]
第 4 页 仿Apple滑动条(拖动)产品展示效果 [4]
第 5 页 仿Apple滑动条(拖动)产品展示效果 [5]

程序说明

首先需要一个容器,滑动范围就在这个容器里面,还有是容器里面的绝对定位的滑块,基本就是这两部分。
滑块拖放的部分请参考拖放效果,这里我把拖放程序扩展了一个设置滑块位置的SetPos方法方便程序使用。

【水平和垂直滑动】

程序支持水平和垂直滑动,设置Horizontal属性为true就是水平滑动(默认),为false就是垂直滑动。
这个属性只能在实例化时设置,初始化之后会就不要修改了。
程序初始化时就根据这个属性锁定拖放的方向:

this._drag[this._horizontal ? "LockY" : "LockX"] = true;

程序支持两个方向的滑动,如果每次都判断一下再分别设置参数会很麻烦,
所以程序中每次滑动都计算两个方向的位置参数,并把参数直接交给_drag来处理。
由于_drag在实例化时已经做了范围限制和方向锁定,已经带了位置参数修正,所以可以直接交给它处理。
这样虽然效率差点,但就能大大降低复杂度,我想还是值得的。

【自动滑移】

运行Run自动滑移程序后,就会自动滑移,参数可以设置滑移的方向(true为右/下,false为左/上)。
步长是根据百分比来设置的

var percent = this.GetPercent() + (bIncrease ? 1 : -1) * this.RunStep / 100;
this.SetPos((this.Container.clientWidth - this.Bar.offsetWidth) * percent, (this.Container.clientHeight - this.Bar.offsetHeight) * percent);

然后通过位置属性判断是否到了极限值,不是的话就用一个定时器继续滑动:

if(!(bIncrease ? this._IsMax : this._IsMin)){
    this._timer = setTimeout(Bind(this, this.Run, bIncrease), this.RunTime);
}

【缓动滑移】

除了SetPos还有一个EasePos缓动滑移程序可以设置滑块位置。
如果Ease属性是false时,EasePos跟SetPos一样直接设置位置,为true时就会缓动(减速)设置位置。
其中缓动的效果请参考图片切换展示效果 ,程序中如果目标值超过极限值时不能直接判断是否到达目标值,不过可以用_IsMid属性(参考位置判断部分)来判断没有到极限值。
注意,因为要跟offset取的值比较,而offset取的值是整数,所以参数必须转换成整数(程序用Math.round处理了),否则如果是小数那就永远都不会相等(死循环)了。

ps:程序只在鼠标点击控制和设置百分比位置中使用了EasePos,其它情况比较适合用SetPos。

【百分比和值】

这个是基本功能了,先看看GetPercent获取百分比程序,这个百分比就是滑块左边距离跟滑动区域的比例:

return this._horizontal ? this.Bar.offsetLeft / (this.Container.clientWidth - this.Bar.offsetWidth)
        : this.Bar.offsetTop / (this.Container.clientHeight - this.Bar.offsetHeight)

注意滑动区域是容器的clientWidth减去滑块的offsetWidth(关于这两个属性详细请看这里)。

对应的有SetPercent设置百分比位置程序,就是根据百分比参数设置滑块的位置:

this.EasePos((this.Container.clientWidth - this.Bar.offsetWidth) * value, (this.Container.clientHeight - this.Bar.offsetHeight) * value);

滑动条更多的应用是在于值的运用。程序中属性MinValue和MaxValue分别设置最小值和最大值。
ps:虽然说是最大值,但不一定就比较大的,不过这样写起来比较方便。
当设置了这两个属性(值)就能GetValue获取当前值了:

return this.MinValue + this.GetPercent() * (this.MaxValue - this.MinValue);

对应的SetValue设置值位置程序:

this.SetPercent((value- this.MinValue)/(this.MaxValue - this.MinValue));

这个很简单,懂点数学应该都明白了。

出处:蓝色理想
责任编辑:bluehearts

上一页 仿Apple滑动条(拖动)产品展示效果 [1] 下一页 仿Apple滑动条(拖动)产品展示效果 [3]

◎进入论坛网页制作WEB标准化版块参加讨论,我还想发表评论

相关文章 更多相关链接
JavaScript Tween算法及缓动效果
PS和专业滤镜让普通相片变HDR效果
如何走出JavaScript初学困境
HTML与javascript中常用编码浅析
Photoshop制作机器油腻效果
作者文章
JavaScript Tween算法及缓动效果
JavaScript 图片切割效果
JavaScript 拖放效果分析
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:2/51个记录/页 转到 页 共5个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2