繁体   English   中英

带有嵌套菜单/多级菜单的JQuery Mobile滑动面板

[英]JQuery Mobile Sliding Panel with nested menu/ multi-level menu

我一直在我的jquery移动设备上从事多级菜单或子菜单的工作,一般来说,第3部分jquery插件已经使我的CSS与position:fixed footer和scrolling有关。

我在这里查看了插件 ,几乎所有插件对我来说都很复杂。 我希望可以使用现有的jQuery移动框架中的一些魔术来重新创建此示例 ,如下所示

左侧面板和子菜单:

这是一个快速的解决方案,仅供您参考。 它有很大的改进空间,因此只要进行任何更改,我都将更新此答案。

根据需要创建子菜单,每个子菜单都有一个唯一的ID和一个带有class的关闭按钮。 将子菜单放在jQM主面板内。

  1. 子菜单HTML结构

     <div class='ui-sub-panel' id='submenu1'> <div class='ui-header' data-theme='a'> <a href='#' class='ui-btn ui-btn-right ui-btn-icon-notext ui-icon-delete panel-close'>Close</a> <h1 class='ui-title'>Submenu1</h1> </div> <div class="ui-content"> <!-- submenu contents here --> </div> </div> 
  2. CSS

    • 全高,全宽并位于外部页面。

       .ui-sub-panel { width: 100%; position: absolute; top: 0; left: -100%; min-height: 100%; max-height: none; } 
    • 打开子菜单

       .ui-sub-panel-open { -moz-transform: translate3d(100%, 0, 0); -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } 
    • 关闭子菜单

       .ui-sub-panel-close{ -moz-transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 
    • 动画关闭/打开

       .ui-sub-panel-animate { -webkit-transition: -webkit-transform 500ms ease; -moz-transition: -moz-transform 500ms ease; transition: transform 500ms ease; } 
  3. JS

    • 关闭主jQM面板后,关闭所有子菜单

       $("#externalpanel").on("panelbeforeclose", function () { $('#submenu1, #submenu2') .addClass('ui-sub-panel-close ui-sub-panel-animate') .removeClass("ui-sub-panel-open"); }); 
    • 打开第一个子菜单

       $('.sub1').on('click', function () { $('#submenu1') .addClass('ui-sub-panel-open ui-sub-panel-animate') .removeClass("ui-sub-panel-close"); }); 
    • 打开第二个子菜单

       $('.sub2').on('click', function () { $('#submenu2') .addClass('ui-sub-panel-open ui-sub-panel-animate') .removeClass("ui-sub-panel-close"); }); 
    • 单击关闭按钮的“关闭”子菜单

       $('.panel-close').on('click', function () { $(this) .closest(".ui-sub-panel") .addClass('ui-sub-panel-close ui-sub-panel-animate') .removeClass("ui-sub-panel-open"); }); 

示范 (1)


更新1

右侧面板和子菜单:

要将面板放置在右侧,请在面板div中添加data-position="right"属性。 同样,在.ui-sub-panel类中, left right更改。

.ui-sub-panel {
   ...
   right: -100%;
   ...
}

示范 (1)


(1)在Safari上测试-iPhone 5 iOS 7.0.6和iPad 2 iOS 7.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM