最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascriptoop开发滑动(slide)菜单控件_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 20:54:45
文档

javascriptoop开发滑动(slide)菜单控件_javascript技巧

javascriptoop开发滑动(slide)菜单控件_javascript技巧:这里使用原生的javascript,用面向对象的方式创建一个容易维护使用方便的滑动菜单,调用方式如下: 代码如下: var $sliding = document.getElementById(silding); var s1 = new Sliding(); s1.commands = $sliding.
推荐度:
导读javascriptoop开发滑动(slide)菜单控件_javascript技巧:这里使用原生的javascript,用面向对象的方式创建一个容易维护使用方便的滑动菜单,调用方式如下: 代码如下: var $sliding = document.getElementById(silding); var s1 = new Sliding(); s1.commands = $sliding.


这里使用原生的javascript,用面向对象的方式创建一个容易维护使用方便的滑动菜单,调用方式如下:
代码如下:
var $sliding = document.getElementById("silding");
var s1 = new Sliding();
s1.commands = $sliding.getElementsByTagName("dt");
s1.panels = $sliding.getElementsByTagName("dd"); ;
s1.init("mouseover", "active");

演示代码分为slide.js和slide.html两个文件
slide.htm:
代码如下:




javascript slide控件演示






第一个一级菜单


  • 第一个二级菜单

  • 第一个二级菜单

  • 第一个二级菜单





  • 第二个一级菜单


  • 第二个二级菜单

  • 第二个二级菜单

  • 第二个二级菜单





  • 第三个一级菜单


  • 第三个二级菜单

  • 第三个二级菜单

  • 第三个二级菜单






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




    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对技术的提高还是很有帮助。

    文档

    javascriptoop开发滑动(slide)菜单控件_javascript技巧

    javascriptoop开发滑动(slide)菜单控件_javascript技巧:这里使用原生的javascript,用面向对象的方式创建一个容易维护使用方便的滑动菜单,调用方式如下: 代码如下: var $sliding = document.getElementById(silding); var s1 = new Sliding(); s1.commands = $sliding.
    推荐度:
    标签: js javascript slide
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top