jquery – 隐藏在窗口上的响应式菜单调整大小

前端之家收集整理的这篇文章主要介绍了jquery – 隐藏在窗口上的响应式菜单调整大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我这里有一个jsfiddle – http://jsfiddle.net/2r3Ap/

和演示 – http://www.ttmt.org.uk/forum/

这是一个简单的响应式菜单.
调整窗口大小时,水平菜单将移动到垂直菜单并隐藏.
然后红色按钮控制导航菜单上下滚动.
调整窗口大小后,应再次显示水平菜单.

很多这些,我认为它很容易重新创建.

我的问题是:

如果窗口调整较小并且垂直菜单打开并使用按钮关闭,然后窗口变大,导航将保持隐藏状态.

当垂直菜单打开或关闭时,我需要在调整窗口大小时显示水平菜单.

  1. <!DOCTYPE html>
  2. <html>
  3. <Meta charset="UTF-8">
  4. <Meta name="description" content="">
  5. <Meta name="keywords" content="">
  6. <Meta name="robots" content="">
  7. <title>Title of the document</title>
  8.  
  9. <Meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />
  10.  
  11. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
  12.  
  13. <style type="text/css">
  14.  
  15. *{
  16. margin:0;
  17. padding:0;
  18. }
  19. header{
  20. max-width:600px;
  21. margin:0 auto;
  22. background:#aaa;
  23. overflow:auto;
  24. padding:30px 50px 0 50px;
  25. border-left:10px solid #fff;
  26. border-right:10px solid #fff;
  27. }
  28. button{
  29. width:30px;
  30. height:30px;
  31. background:red;
  32. display:none;
  33. border:none;
  34. }
  35. nav{
  36. margin:10px 0 0 0;
  37. }
  38. nav li{
  39. display:inline;
  40. }
  41. nav li a{
  42. float:left;
  43. display:inline-block;
  44. padding:5px;
  45. background:yellow;
  46. margin:0 5px 0 0 ;
  47. }
  48. nav li a:hover{
  49. background:#fff;
  50. }
  51.  
  52. @media only screen and (max-width:400px){
  53.  
  54. button{
  55. display:block;
  56.  
  57. }
  58. nav{
  59. display:none;
  60. }
  61. nav li{
  62. display:block;
  63. }
  64. nav li a{
  65. float:none;
  66. display:block;
  67. padding:5px;
  68. background:yellow;
  69. margin:0 5px 0 0 ;
  70. }
  71.  
  72. }
  73. </style>
  74.  
  75. </head>
  76.  
  77. <body>
  78.  
  79. <div id="wrap">
  80.  
  81. <header>
  82. <button></button>
  83. <nav>
  84.  
  85. <ul>
  86. <li><a href="">One</a></li>
  87. <li><a href="">Two</a></li>
  88. <li><a href="">Three</a></li>
  89. <li><a href="">Four</a></li>
  90.  
  91. </ul>
  92. </nav>
  93.  
  94. </header>
  95.  
  96. </div><!-- #wrap -->
  97.  
  98. <script>
  99.  
  100. $(function(){
  101. $('button').click(function(){
  102. $('nav').slideToggle();
  103. })
  104. })
  105.  
  106. </script>
  107.  
  108. </body>
  109.  
  110. </html>

解决方法

@ jimjimmy1995有最简单的解决方案,但另一种方法是使用jQuery的 .resize()方法
  1. $(function ()
  2. {
  3. var $window = $(window),$nav = $('nav'),$button = $('button');
  4.  
  5. $button.on('click',function ()
  6. {
  7. $nav.slideToggle();
  8. });
  9.  
  10. $window.on('resize',function ()
  11. {
  12. if ($window.width() > 400)
  13. {
  14. $nav.show();
  15. }
  16. });
  17. });

See working jsFiddle demo

猜你在找的jQuery相关文章