【问题标题】:Enhancing a jQuery Mobile Menu System增强 jQuery Mobile 菜单系统
【发布时间】:2014-03-23 16:30:51
【问题描述】:

@Omar 打造了酷炫的 ios 风格菜单系统here

我需要一些修改。

1) 当新的子菜单滑入时,上一个菜单应该滑出。

2) 新的子菜单应该继承与上一个菜单相同的背景颜色

【问题讨论】:

  • 奥马尔,我想他已经登录了;)

标签: javascript jquery html css jquery-mobile


【解决方案1】:

您需要在打开另一个菜单时关闭 open 菜单。在打开任一菜单的 click 处理程序中,添加以下内容:

$(".ui-sub-panel-open")
    .addClass('ui-sub-panel-close ui-sub-panel-animate')
    .removeClass("ui-sub-panel-open");

这将关闭打开菜单然后滑动下一个;完整的代码。

/* open submenu1 */
$('.sub1').on('click', function () {
    $(".ui-sub-panel-open")
        .addClass('ui-sub-panel-close ui-sub-panel-animate')
        .removeClass("ui-sub-panel-open");
    $('#submenu1')
        .addClass('ui-sub-panel-open ui-sub-panel-animate')
        .removeClass("ui-sub-panel-close");
});

/* open submenu2 */
$('.sub2').on('click', function () {
    $(".ui-sub-panel-open")
        .addClass('ui-sub-panel-close ui-sub-panel-animate')
        .removeClass("ui-sub-panel-open");
    $('#submenu2')
        .addClass('ui-sub-panel-open ui-sub-panel-animate')
        .removeClass("ui-sub-panel-close");
});

关于background 颜色,将您想要的任何颜色添加到ui-sub-panel-open,并将另一种颜色(如果需要)添加到ui-sub-panel-close

.ui-sub-panel-open {
  -moz-transform: translate3d(-17em, 0, 0);
  -webkit-transform: translate3d(-17em, 0, 0);
  transform: translate3d(-17em, 0, 0);
  background: lightblue;
}

.ui-sub-panel-close {
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
  background: lightgray;
}

别忘了删除下面的 CSS

#submenu1 {
  background: color;
}

#submenu2 {
  background: color;
}

更新

要将关闭的面板向左滑动,请修改.ui-sub-panel-close,如下所示。

.ui-sub-panel-close {
  -webkit-transform: translate3d(-34em, 0, 0);
  -moz-transform: translate3d(-34em, 0, 0);
  transform: translate3d(-34em, 0, 0);
  background: lightgray;
}

然后您应该通过收听transitionend 事件将子菜单返回到原来的位置。

$(document).on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", "#submenu1, #submenu2", function () {
  var position = $(this).offset().left;
  if (position < 0) {
    $(this).removeClass("ui-sub-panel-close ui-sub-panel-animate");
  }
});

Demo

【讨论】:

  • 再次感谢。只是方向不对。随着新的子菜单从右侧滑入,旧的子菜单应该向左而不是向右滑出。
  • 这可以通过将transition3d(-34em, 0, 0) 更改为ui-sub-panel-close 来完成。但这需要额外的 JS 将 submenu 恢复到原来的位置。
  • 同样的问题,子菜单列表项在新的子菜单面板前仍然可见
  • @totalitarian 主面板列表项?如果是,在 html 中,将子菜单放在面板中的任何其他元素下。
  • 没问题奥马尔。感谢您今天的所有帮助。非常感谢!
猜你喜欢
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多