设为首页 收藏本站
查看: 593|回复: 0

有趣的win8进度条

[复制链接]

尚未签到

发表于 2015-5-20 11:46:42 | 显示全部楼层 |阅读模式
  昨天,本来这篇文章是要推到博客园首页的,但是管理员发邮件说,博文应当以分享知识为主,不应该只贴代码,想想觉得很对,就打算重新整理一下这篇文章。
  刚才在安装visual studio 12,发现它的安装界面都是win8风格的,而且安装的时候有个进度条,看着挺不错,就用 jquery 实现了一下,的确挺有趣:


  先说说原理吧!进度条里面的小球运动分成 3 个阶段,减速(-10px ~ 190px),匀速(190px ~ 310px),加速(310px ~ 510px)。上面的黑色框总宽度为 500 像素,小球(宽高均为 10 像素)在运动的时候,首先从 -10px 的地方起步,然后快速的到达 190px 的地方,然后再匀速的到达 310px 的地方, 最后加速到达末尾 510px 的地方。小球每一次的运动都是 jquery.animate 来实现的,每次运动完毕会触发一个回调函数,回调函数根据小球的位置决定小球下一阶段的运动过程,并且让小球持续保持运行。详细请参考代码注释。
  代码:







* {margin:0;padding:0}
.progress {width:500px;height:100px;margin:0 auto;position:relative;background-color: #000;overflow:hidden;}
.progress .btn {display:block;position:absolute;width:100px;height:30px;text-align:center;line-height:30px;color:#FFF;font-size:16px;cursor: pointer;border:1px solid #000;}
.progress .btn:hover {border-color:#EEE;}
.star {width:10px;height:10px;border-radius:5px;background-color: #92C4E6;position:absolute;left:-10px;top:45px;}



$(function(){
                //效果的运行通过按钮触发,此函数即为点击按钮之后执行的回调函数
var anim = function(){
var that = $(this), thatp = that.parent();
                    //2. 按钮自身的动画,点击之后,跑到容器的右下角,并改变文字,完毕之后,开始运行进度条
that.animate({left:thatp.width()-that.width(),top:thatp.height()-that.height()}, "fast", function(){
var i = 200;
                        //解绑原有的的 click 回调函数,并重新绑定
$(".progress").children("a").text("点击停止效果").unbind("click").bind("click", function(){
var that = $(this), thatp = that.parent();
                            //停止小球动画并将所有的 div 移除
$(this).closest(".progress").children(".star").stop().remove();
                            //按钮复位
$(this).animate({left: (thatp.width()-that.width())/2, top: (thatp.height()-that.height())/2}, "slow", function(){
$(".progress").children("a").text("点击观看效果");
}).unbind('click').bind('click', anim); //重新绑定
                           //在按钮之后添加 5 个 div ,并将当前 jquery 内部栈退回到只含有 ['.progress'],然后迭代每一个 div
}).after(new Array(6).join('')).end().children(".star").each(function(){
                            //小球每次运动完毕执行的回调函数,使用 $.proxy 绑定回调函数中的 this 为当前元素
var callback = $.proxy(function(){
var that = $(this), left = parseInt(that.css("left")); //解析当前元素的 left 位置
if(left === 510) { left = -10;that.css("left", left); } //如果已经到达末尾,重置为起点
switch(left) {
case -10:
                     //这里本来使用的是 jquery.ui.effect.js 里面的 easeInCubic,为了精简代码放弃了
that.animate({left: 190}, 700, 'swing', callback);
break;
case 190:
that.animate({left: 310}, 1500, 'linear', callback);
break;
case 310:
                                    //这里本来使用的是 jquery.ui.effect.js 里面的 easeOutCubic,为了精简代码放弃了
that.animate({left: 510}, 700, 'swing', callback).delay(1000);
                     break;
                                }
                            }, this);
                            setTimeout(callback, i); i +=200;
                        }); }); }, p, a;
                //貌似博客园不能再博文里面写 HTML,JS 代码,所以只好自己构造 DOM,
p = $(".progress").html('点击观看效果');
                //1. 绑定按钮 click 事件
a = p.children('a').bind('click', anim);
                //将按钮置于容器的中间
a.css({left: (p.width()-a.width())/2, top: (p.height()-a.height())/2});
});






  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-68876-1-1.html 上篇帖子: Win8先体验(5)——详解Ribbon界面下资源管理器 [M2-M3 pre] 下篇帖子: 发布一个win8 UI风格的前端开发者网址导航
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表