源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript oop开发滑动(slide)菜单控件

  • 时间:2020-11-15 15:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript oop开发滑动(slide)菜单控件
这里使用原生的javascript,用面向对象的方式创建一个容易维护使用方便的滑动菜单,调用方式如下:
[url=#]<li>第一个二级菜单</li> <li>第一个二级菜单</li> </ul> </dd> </dl> <dl> <dt>第二个一级菜单</dt> <dd> <ul> <li>第二个二级菜单</li> <li>第二个二级菜单</li> <li>第二个二级菜单</li> </ul> </dd> </dl> <dl> <dt>第三个一级菜单</dt> <dd> <ul> <li>第三个二级菜单</li> <li>第三个二级菜单</li> <li>第三个二级菜单</li> </ul> </dd> </dl> </div> <script type="text/javascript"> var $sliding = document.getElementById("silding"); var s1 = new Sliding(); s1.commands = $sliding.getElementsByTagName("dt"); s1.panels = $sliding.getElementsByTagName("dd"); ; s1.init("mouseover", "active"); </script> </body> </html>
slide.js:
function Slider(i, panelHeight) { //dto this.index = i; this.panelHeight = panelHeight; } //class Sliding { function Sliding(activeIndex) { this.commands = []; this.panels = []; this.activeIndex = activeIndex || 0; this.sliderCache = {}; } Sliding.prototype = { //绑定事件 init: function(eventName, activeCssClass) { var _this = this; var cmds = _this.commands; _this.activeClass = activeCssClass; for (var i = 0, n = cmds.length; i < n; i++) { cmds[i]["on" + eventName] = function(e) { _this.handel(this, e); } cmds[i].index = i; if (i == _this.activeIndex) { _this.sliderCache = new Slider(i, _this.panels[i].offsetHeight); } } }, //事件处理函数 handel: function(elem, args) { var _this = this; var index = elem.index; var cacheIndex = _this.sliderCache.index; var cacheElem = _this.commands[cacheIndex]; if (index == cacheIndex) return; var showPanel = _this.panels[index]; var hidePanel = _this.panels[cacheIndex]; var h = parseInt(_this.sliderCache.panelHeight); showPanel.style.height = "0px"; showPanel.style.display = "block"; _this.tween(hidePanel, showPanel, h); elem.className = _this.activeClass; cacheElem.className = cacheElem.className.replace(eval("/ ?"+_this.activeClass+" ?/"),""); _this.sliderCache = new Slider(index, h); }, //动画算法 tween: function(obj0, obj1, h) { _this = arguments.callee; var step = 20; if ("\v" == "v") { step = 30; } if (h > 0) { var h0 = obj0.offsetHeight; var h1 = obj1.offsetHeight; if (h < step) { obj0.style.display = "none"; obj0.style.height = (h1 + h) + "px"; obj1.style.height = (h1 + h) + "px"; } else { h = h - step; obj0.style.height = (h0 - step) + "px"; obj1.style.height = (h1 + step) + "px"; setTimeout(function() { _this(obj0, obj1, h) }, 50) } } } } //}
上面就所有代码了这里因为是演示所以让HTML CSS尽量的简化,另外使用jquery的 fn.slideUp fn.slideDown 实现起来会更容易不过我作为一个专业的开发者多了解些原生的JS对技术的提高还是很有帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部