リストやメニューでよく使う「プラス」からの「マイナス」をjQueryでコピペで実装!
アニメーションを9個用意しているので好きなのをコピペして使ってね!
それでは共通のHTML、CSS、jQueryを。
共通のCSSに、追加で欲しいアニメーションを追加するだけで
「プラス → マイナス」の様々なアニメーションが実装可能です。
共通のHTML
<div class="btn"></div>
共通のCSS
.btn { position: relative; width: 46px; height: 46px; display: block; margin: 30px auto; transition: 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); cursor: pointer; will-change: transform; } .btn:hover { transform: scale(0.92); } .btn:before { content: ""; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); width: 75%; height: 3px; border-radius: 10px; background: #000; display: block; } .btn:after { content: ""; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); width: 3px; height: 75%; border-radius: 10px; background: #000; display: block; transition: 0.3s cubic-bezier(0.76, 0, 0.24, 1); will-change: transform; }
共通のjQuery
$(".btn").on("click", function() { if(!$(this).hasClass("active")) { $(this).addClass("active"); } else { $(this).removeClass("active"); } });
01. プラスがフェードアウトしてマイナスに
.btn.active:after { opacity: 0; }
02. プラスの縦棒が右にペコんと倒れマイナスに
.btn.active:after { transform: translate(-50%, -50%) rotate(90deg); }
03. プラスの縦棒が左にペコんと倒れマイナスに
.btn.active:after { transform: translate(-50%, -50%) rotate(-90deg); }
04. プラスが右にくるんと回ってマイナスに
.btn.active { transform: rotate(180deg); } .btn.active:after { transform: translate(-50%, -50%) rotate(90deg); }
05. プラスが左にくるんと回ってマイナスに
.btn.active { transform: rotate(-179.99deg); } .btn.active:after { transform: translate(-50%, -50%) rotate(-90deg); opacity: 0; }
06. プラスの縦棒が下にシュッと消えてマイナスに
.btn:after { transition: 0.3s cubic-bezier(0.33, 1, 0.68, 1); } .btn.active:after { transform: translate(-50%, 0%); opacity: 0; }
07. プラスの縦棒が上にシュッと消えてマイナスに
.btn:after { transition: 0.3s cubic-bezier(0.33, 1, 0.68, 1); } .btn.active:after { transform: translate(-50%, -100%); opacity: 0; }
08. プラスの縦線が真ん中に収まってマイナスに
.btn.active:after { height: 0; }
09. プラスの縦線が真ん中に収まって回転してマイナスに
.btn.active { transform: rotate(180deg); } .btn.active:after { height: 0; }
コメント