前提・実現したいこと
閲覧ありがとうございます。
下記を満たすようなスライドするナビゲーションを作りたいです。
0. クリックしたアイテムが左にスライドする
0. スライド済みのアイテムをクリックすると、そのアイテムは閉じる
0. アイテムがスライド済みのときに他のアイテムをクリックすると、
スライド済みのアイテムは閉じてクリックしたアイテムのみスライドする。
0. 各アイテムはスライドする幅が違う
発生している問題・エラーメッセージ
上記3番めの仕組みについて、
下記の画像のような動作を実現したいのですが、
どのように条件付をすればよいかが分かりません。
よろしくお願いいたします。
該当のソースコード
HTML
1<div class="gnav"> 2 <ul> 3 <li class="gnav-item-1"></li> 4 <li class="gnav-item-2"></li> 5 <li class="gnav-item-3"></li> 6 <li class="gnav-item-4"></li> 7 </ul> 8</div><!-- /gnav -->
CSS
1.gnav ul { 2 display: flex; 3 align-items: center; 4 justify-content: flex-end; 5}
jQuery
1$(function () { 2 $(".gnav-item-1").on("click", function () { 3 if ($(".gnav-item-1 ").css("margin-right") == "0px") { 4 $(".gnav-item-1").stop().animate({ marginRight: "230px" }, 500); 5 } else { 6 $(".gnav-item-1").stop().animate({ marginRight: "0px" }, 500); 7 } 8 }); 9 10 $(".gnav-item-2").on("click", function () { 11 if ($(".gnav-item-2 p").css("margin-right") == "0px") { 12 $(".gnav-item-1, .gnav-item-2") 13 .stop() 14 .animate({ marginRight: "150px" }, 500); 15 } else { 16 $(".gnav-item-1, .gnav-item-2") 17 .stop() 18 .animate({ marginRight: "0" }, 500); 19 } 20 }); 21 22 $(".gnav-item-3").on("click", function () { 23 if ($(".gnav-item-3").css("margin-right") == "0px") { 24 $(".gnav-item-2, .gnav-item-3") 25 .stop() 26 .animate({ marginRight: "190px" }, 500); 27 } else { 28 $(".gnav-item-2, .gnav-item-3") 29 .stop() 30 .animate({ marginRight: "0" }, 500); 31 } 32 }); 33 34 $(".gnav-item-4").on("click", function () { 35 if ($(".gnav-item-4 p").css("margin-right") == "0px") { 36 $(".gnav-item-3, .gnav-item-4") 37 .stop() 38 .animate({ marginRight: "115px" }, 500); 39 } else { 40 $(".gnav-item-3, .gnav-item-4") 41 .stop() 42 .animate({ marginRight: "0" }, 500); 43 } 44 }); 45});
回答2件
あなたの回答
tips
プレビュー