蛋疼地开始学JS原型,prototype,试着写一个小小的伸缩框
2011-04-09 01:40
411 查看
自己也刚开始学,之前貌似我写的JS都是一大堆的函数,一大堆的ID啥的,虽然东西都写得出来,但是自己也感觉很烦。
嘛……于是,感觉应该要开始学着写写原型了……借着脑袋里淡淡地印象……写这么一个小东西。算是准备开始学吧……
嘛……于是,感觉应该要开始学着写写原型了……借着脑袋里淡淡地印象……写这么一个小东西。算是准备开始学吧……
<!doctype html> <html lang="zh-cn"> <head> <meta charset="utf-8" /> <title>小东西</title> </head> <body> <style type="text/css"> .aa{ position:relative; overflow:hidden;} .bb{ position:absolute; bottom:0;} </style> <script type="text/javascript"> function smooth_show(id){ var a = this; this.move = 0; this.self = document.getElementById(id); this.changer = this.self.parentNode; this.open = function(){ window.clearInterval(a.timer); a.timer = window.setInterval(function(){ if (a.changer.offsetHeight < a.self.offsetHeight){ var dis = a.self.offsetHeight - a.changer.offsetHeight; var change_height = dis / 3; change_height = change_height < 2 ? 2 : change_height; change_height = change_height + a.changer.offsetHeight > a.self.offsetHeight ? dis : change_height; a.changer.style.height = a.changer.offsetHeight + change_height + "px"; }else { window.clearInterval(a.timer); } }, 20); a.move = 1; }; this.close = function(){ window.clearInterval(a.timer); a.timer = window.setInterval(function(){ if (a.changer.offsetHeight > 0){ var dis = a.changer.offsetHeight; var change_height = dis / 3; change_height = change_height < 2 ? 2 : change_height; change_height = a.changer.offsetHeight - change_height < 0 ? dis : change_height; a.changer.style.height = a.changer.offsetHeight - change_height + "px"; }else { window.clearInterval(a.timer); } }, 20); a.move = 2; } } smooth_show.prototype.auto = function(){ if (this.move != 1){ this.open(); }else { this.close(); } } </script> <div class="aa"> <div class="bb" id="test"> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> <div>asdfasdfasdf</div> </div> </div> <script type="text/javascript"> var asdf = new smooth_show("test"); asdf.open(); </script> <div style="position:absolute; left:200px; top:150px;"> <input type="button" value="展开" onclick="asdf.open();" /> <input type="button" value="关闭" onclick="asdf.close();" /> <input type="button" value="自动" onclick="asdf.auto();" /> </div> </body> </html>
相关文章推荐
- 一个能说明问题的js的原型 prototype的实例--简单易懂
- JS 原型(prototype)详解
- js实现继承的练习 prototype原型继承
- js 原型继承 Prototype
- js中的prototype原型对象(转载)
- 理解js中的原型链,prototype与__proto__的关系
- vue.js+express写一个微信商城(开始)
- JS之原型链(prototype)
- [js高手之路]图解javascript的原型(prototype)对象,原型链实例
- JS中原型链中的prototype与_proto_的个人理解与详细总结(**************************************************************)
- js原型 prototype
- 理解js中的原型链,prototype与__proto__的关系
- javascript-js 的prototype原型理解讲解
- [js高手之路]使用原型对象(prototype)需要注意的地方
- 理解js的prototype原型对象
- js中使用使用原型(prototype)定义方法的好处
- js中对prototype对象继承的一个实例
- JS中定义对象方式四: 使用原型(prototype)方式创建对象之二(弊端及其改进)
- js 原型 prototype
- [js高手之路]一步步图解javascript的原型(prototype)对象,原型链