js以及jquery实现手风琴效果的方法
这篇文章主要讲解了js以及jquery实现手风琴效果的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
创新互联2013年至今,先为辽阳等服务建站,辽阳等地企业,进行企业商务咨询服务。为辽阳企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
最近又复习了jQuery的知识,既然jQuery是javascript的一个库。jQuery能做到的事情javascript也能做到。因此用这两种方法实现了图片手风琴效果。
按照惯例,还是上代码吧,因为代码里有我的注释也就相当于解释了!
先看一下javascript的代码吧:
div布局:注意哦,里面的图片我们用js代码生成
css样式:
要写js代码了。这里封装了一个完整的运动框架(我个人 觉得哈,你可以继续完善,不过你要告诉我,我也学习一下!)
/* * 实现动画的步骤: 1.怎样得到当前的样式 封装一个函数 getStyle() 2.步长的计算 用(目标位置 - 当前的样式) / 10 3. 缓动动画原理: 盒子本身的样式 + 步长(不断变化的) */ /* * css设置透明度,一般在ie中用的是filter:alpha(opacity=0); 而在firefox中,一般就是直接使用opacity:0 */ // 多个属性的运动框架 以及添加回调函数 function animate(obj,json,fn){ // 目标obj json 属性:属性值 fn回调函数 clearInterval(obj.timer); obj.timer = setInterval(function(){ var flag = true;// 用来判断是否停止定时器 // 遍历json for (var attr in json) { //attr 属性 json[attr]值 var curStyle = 0; if (attr == "opacity") { curStyle = parseInt(getStyle(obj,attr)*100); } else{ curStyle = parseInt(getStyle(obj,attr));// 获得数值 } // 得到步长 目标位置就是json[attr] var step = (json[attr]-curStyle) / 10; step = step > 0 ? Math.ceil(step) :Math.floor(step); // 判断透明度 if (attr == "opacity") { // 判断用户有没有输入opacity if ("opacity" in obj.style) { obj.style.opacity = (curStyle + step) / 100; } else{ obj.style.filter = "alpha(opacity="+(curStyle +step)+")"; } } else if(attr == "zIndex"){ obj.style.zIndex = json[attr]; } else{ obj.style[attr] = curStyle +step +"px"; } // 判断是否已经都到了目标位置 只要其中一个不满足条件 就不应该停止定时器 if (curStyle != json[attr]) { flag = false; } } // 判断定时器条件 是否该停止了 if (flag) { clearInterval(obj.timer) // 当定时器停止后,动画也就结束了.如果有回调函数就执行回调函数 if(fn){ fn(); } } },30); } // 封装函数 得到属性 function getStyle(obj,attr) { // 谁的 那个属性 if(obj.currentStyle) // ie 等 { return obj.currentStyle[attr]; // 返回传递过来的某个属性 } else { return window.getComputedStyle(obj,null)[attr]; // w3c 浏览器 } }
接着我们在js里面引入我们写的框架
接下来,写js代码
好啦,这样就完成了,具体效果你自己动手看看吧。完整的下载地址为js版本的手风琴效果
写完了js,发现代码量好多啊,看看jquery代码,哦买嘎,切记一定要先引入jQuery的包,再写代码哈!
看完上述内容,是不是对js以及jquery实现手风琴效果的方法有进一步的了解,如果还想学习更多内容,欢迎关注创新互联行业资讯频道。
网页标题:js以及jquery实现手风琴效果的方法
路径分享:http://scyingshan.cn/article/jphosp.html