【发布时间】:2017-04-06 16:50:59
【问题描述】:
我想要一个在小屏幕尺寸下可切换并且在中等尺寸以上屏幕上始终可见的菜单。
行为应该(基本上)与 demo here 完全一样。
步骤如下:
- 转到小屏幕尺寸(直到身体轮廓为金色)
- 检查它是否可以切换
- 当菜单被隐藏并且您获得更大的屏幕尺寸时,菜单应该会出现
- 当菜单没有隐藏时,转到更大的屏幕尺寸,它应该保持显示
- 在大屏幕尺寸下,元素被隐藏时,您应该可以看到它,但当您拖动到较小尺寸时,它应该被隐藏
- 在大屏幕上,并且元素未隐藏时,您应该可以看到它,但是当您拖动到较小的尺寸时,它应该被隐藏
要实现这一点很容易:
$(".click").click(function() {
$(".menu").toggleClass("hidden-md-down");
});
我现在的问题是我想为这个节目制作动画并隐藏,但我无法使用类切换来做到这一点。
所以我必须依赖例如slideToggle(),这就是我的问题所在,请参阅demo here。
如果您现在转到小屏幕尺寸,隐藏菜单并增大窗口尺寸,menu 将不会出现,因为 hide() 函数。
我知道这可以通过 $(window).resize 解决,但我绝对不想要这个解决方案,因为这样一个小功能的性能很糟糕。
那么我怎样才能让这个切换类带有动画或使用 js 而不使用 resize 方法呢?
【问题讨论】:
-
想象一下动画菜单切换中的用户体验
-
使用限制调整大小,如jsfiddle.net/cowboy/cTZJU ...它对性能影响很小甚至没有,这里有很好的解释:davidwalsh.name/javascript-debounce-function
-
为了获得最佳性能,请将您的窗口大小检查连接到浏览器调整大小的末尾,而不是每个阶段。
-
您可以在媒体查询中使用
input-label和focus输入状态,以更接近可行的解决方案。
标签: javascript jquery css media-queries