2017-12-04 5 views
1

私はCssとjQueryで簡単な応答メニューを試しています。 jQueryスクリプトが特定のウィンドウ幅でのみ動作するようにしたい。私はブラウザのサイズを変更します。ここに私のコードです。シンプルなjqueryとcssで反応的なメニューを作成するには

$(document).ready(function(){ 
 
\t \t $(".resmenu").click(function(){ 
 
\t \t \t $(".menu").slideToggle(); 
 
\t \t }); 
 

 
\t \t $(".submenu").click(function(){ 
 
\t \t \t $(this).toggleClass("active_submenu"); 
 
\t \t \t $(this).parent().find(".dropdown").slideToggle(); 
 
\t \t }); 
 

 
\t });
.container { 
 
\t width:980px; 
 
\t margin:100px auto 0 auto; 
 
\t font-family:arial; 
 
} 
 

 
ul, li { 
 
\t margin:0; 
 
\t padding:0; 
 
} 
 

 
.resmenu { 
 
\t display:none; 
 
} 
 

 
.menu li { 
 
\t display: inline-block; 
 
\t position: relative; 
 
} 
 
.menu li a { 
 
\t font-size: 14px; 
 
\t text-transform: uppercase; 
 
\t color: #3b2612; 
 
\t padding: 6px 17px; 
 
\t letter-spacing: 1px; 
 
\t display: block; 
 
\t text-decoration: none; 
 
} 
 
.menu li:hover a { 
 
\t background: #444; 
 
\t color: #fff !important; 
 
} 
 

 

 
.menu li ul { 
 
\t position: absolute; 
 
\t width: 250px; 
 
\t z-index: 5; 
 
\t left: 0px; 
 
\t top:28px; 
 
\t display:none; 
 
\t 
 
} 
 
.menu li:hover ul { 
 
\t display:block; 
 
} 
 
.menu li ul li { 
 
\t display: block; 
 
} 
 

 
.menu li ul li a { 
 
\t padding: 6px 17px; 
 
\t transition: all 0.2s; 
 
\t text-transform: capitalize; 
 
} 
 
.menu li ul li a:hover { 
 
\t background: #000; 
 
} 
 

 

 
/*--- responsive ----*/ 
 
@media screen and (max-width:768px) { 
 

 
.resmenu { 
 
\t color: #fff !important; 
 
\t display: block; 
 
\t text-decoration: none !important; 
 
\t background: #6ca2bd; 
 
\t padding: 5px 10px; 
 
} 
 
.menu { 
 
\t display: none; 
 
\t background: #444444; 
 
} 
 
.menu li { 
 
\t position: relative; 
 
\t display: block; 
 
} 
 
.menu li a { 
 
\t color: #fff; 
 
\t font-size:14px; 
 
\t padding: 6px 17px; 
 
} 
 
.menu li a:hover { 
 
\t background-color: #000; 
 
\t color: #000; 
 
\t transition: all 0.3s; 
 
} 
 
.active_submenu { 
 
\t background-color: #ceb689 !important; 
 
\t color: #fff !important; 
 
} 
 

 
.menu li ul { 
 
\t display: none; 
 
\t width: 100%; 
 
\t position: relative; 
 
\t top: 0px; 
 
\t display:none; 
 
\t 
 
} 
 
.menu li:hover ul { 
 
\t display: none; 
 
\t top: 0px; 
 
} 
 
\t 
 
.menu li a.active { 
 
\t color: #fff; 
 
\t font-family: 'opensanssemibold'; 
 
} 
 
\t 
 
.menu li ul li a { 
 
\t background:#333; 
 
} 
 

 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="btm_header"> 
 
\t \t \t \t \t \t <a href="javascript:void();" class="resmenu">Menu</a> 
 
     
 
     <ul class="menu"> 
 
      <li><a href="#">Menu</a></li> 
 
      <li><a href="javascript:void(0);" class="submenu">Dropdown One <span></span></a> 
 
      <ul class="dropdown"> 
 
       <li><a href="#">Dropdown</a></li> 
 
       <li><a href="#">Dropdown</a></li> 
 
       <li><a href="#">Dropdown</a></li> 
 
       <li><a href="#">Dropdown</a></li> 
 
      </ul> 
 
      </li> 
 
      <li><a href="javascript:void(0);" class="submenu">Dropdown Two <span></span></a> 
 
\t \t \t <ul class="dropdown"> 
 
\t \t \t <li><a href="#">Dropdown</a></li> 
 
       <li><a href="#">Dropdown</a></li> 
 
       <li><a href="#">Dropdown</a></li> 
 
       <li><a href="#">Dropdown</a></li> 
 
\t \t \t </ul> 
 
      </li> 
 
      <li><a href="#">Menu</a></li> 
 
      <li><a href="#">Menu</a></li> 
 
     </ul> 
 
\t \t \t \t \t </div> 
 
</div>

それは768pxの画面サイズに取り組んでいるが、私は以上の768の画面サイズに代わりホバーのドロップダウンリンクをクリックしたとき、リンクドロップダウンスライドトグルです。私は、特定の幅だけでこのスクリプトの作業が必要です。

答えて

1

利用$(window).width()画面の幅を取得し、あなたの状態でそれを使用する:

if ($(window).width() < 768) { 
     // run your code here 
} 

は、コードスニペットを参照してください:CSSの変更で

$(document).ready(function() { 
 
    $(".resmenu").click(function() { 
 
    $(".menu").slideToggle(); 
 
    }); 
 

 
    $(".submenu").click(function() { 
 
    if ($(window).width() < 768) { 
 
     $(this).toggleClass("active_submenu"); 
 
     $(this).parent().find(".dropdown").slideToggle(); 
 
    } 
 
    }); 
 

 
});
.container { 
 
    width: 980px; 
 
    margin: 100px auto 0 auto; 
 
    font-family: arial; 
 
} 
 

 
ul, 
 
li { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
.resmenu { 
 
    display: none; 
 
} 
 

 
.menu li { 
 
    display: inline-block; 
 
    position: relative; 
 
} 
 

 
.menu li a { 
 
    font-size: 14px; 
 
    text-transform: uppercase; 
 
    color: #3b2612; 
 
    padding: 6px 17px; 
 
    letter-spacing: 1px; 
 
    display: block; 
 
    text-decoration: none; 
 
} 
 

 
.menu li:hover a { 
 
    background: #444; 
 
    color: #fff !important; 
 
} 
 

 
.menu li ul { 
 
    position: absolute; 
 
    width: 250px; 
 
    z-index: 5; 
 
    left: 0px; 
 
    top: 28px; 
 
    display: none; 
 
} 
 

 
.menu li:hover ul { 
 
    display: block; 
 
} 
 

 
.menu li ul li { 
 
    display: block; 
 
} 
 

 
.menu li ul li a { 
 
    padding: 6px 17px; 
 
    transition: all 0.2s; 
 
    text-transform: capitalize; 
 
} 
 

 
.menu li ul li a:hover { 
 
    background: #000; 
 
} 
 

 

 
/*--- responsive ----*/ 
 

 
@media screen and (min-width:769px) { 
 
    .menu { 
 
    display: block!important; 
 
    } 
 
} 
 

 
@media screen and (max-width:768px) { 
 
    .resmenu { 
 
    color: #fff !important; 
 
    display: block; 
 
    text-decoration: none !important; 
 
    background: #6ca2bd; 
 
    padding: 5px 10px; 
 
    } 
 
    .menu { 
 
    display: none; 
 
    background: #444444; 
 
    } 
 
    .menu li { 
 
    position: relative; 
 
    display: block; 
 
    } 
 
    .menu li a { 
 
    color: #fff; 
 
    font-size: 14px; 
 
    padding: 6px 17px; 
 
    } 
 
    .menu li a:hover { 
 
    background-color: #000; 
 
    color: #000; 
 
    transition: all 0.3s; 
 
    } 
 
    .active_submenu { 
 
    background-color: #ceb689 !important; 
 
    color: #fff !important; 
 
    } 
 
    .menu li ul { 
 
    display: none; 
 
    width: 100%; 
 
    position: relative; 
 
    top: 0px; 
 
    display: none; 
 
    } 
 
    .menu li:hover ul { 
 
    display: none; 
 
    top: 0px; 
 
    } 
 
    .menu li a.active { 
 
    color: #fff; 
 
    font-family: 'opensanssemibold'; 
 
    } 
 
    .menu li ul li a { 
 
    background: #333; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="btm_header"> 
 
    <a href="#" class="resmenu">Menu</a> 
 

 
    <ul class="menu"> 
 
     <li><a href="#">Menu</a></li> 
 
     <li><a href="javascript:void(0);" class="submenu">Dropdown One <span></span></a> 
 
     <ul class="dropdown"> 
 
      <li><a href="#">Dropdown</a></li> 
 
      <li><a href="#">Dropdown</a></li> 
 
      <li><a href="#">Dropdown</a></li> 
 
      <li><a href="#">Dropdown</a></li> 
 
     </ul> 
 
     </li> 
 
     <li><a href="javascript:void(0);" class="submenu">Dropdown Two <span></span></a> 
 
     <ul class="dropdown"> 
 
      <li><a href="#">Dropdown</a></li> 
 
      <li><a href="#">Dropdown</a></li> 
 
      <li><a href="#">Dropdown</a></li> 
 
      <li><a href="#">Dropdown</a></li> 
 
     </ul> 
 
     </li> 
 
     <li><a href="#">Menu</a></li> 
 
     <li><a href="#">Menu</a></li> 
 
    </ul> 
 
    </div> 
 
</div>

+0

ブラウザを768以上の解像度にリサイズすると、応答メニューの切り替え後、メニュー全体が非表示になります。 –

+0

@MahmoodMohammed私は問題を解決...私の答えを参照してください:) – Chiller

+0

ありがとうございます。それは正常に動作しています。 –

0

」コンテナの幅を100%に設定し、max-widthを980pxに設定します。

関連する問題