Home  >  Article  >  Web Front-end  >  Develop sliding menu control with javascript oop_javascript skills

Develop sliding menu control with javascript oop_javascript skills

WBOY
WBOYOriginal
2016-05-16 18:20:341164browse

Native javascript is used here to create a sliding menu that is easy to maintain and use in an object-oriented way. The calling method is as follows:

Copy code The code is as follows:

var $sliding = document.getElementById("silding");
var s1 = new Sliding();
s1.commands = $sliding.getElementsByTagName(" dt");
s1.panels = $sliding.getElementsByTagName("dd"); ;
s1.init("mouseover", "active");

Demo code points Copy the code

for the two files slide.js and slide.html: The code is as follows:




javascript slide control demonstration

< script type="text/javascript" src="slide.js">




First level menu






Second level menu



  • Second Second level menu

  • Second level menu

  • Second level menu

  • < /ul>



Third level menu


  • Third secondary menu

  • Third secondary menu







< /body>


slide.js:

Copy code The code is as follows:

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对技术的提高还是很有帮助。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn