← 動的パーツギャラリーへ戻る

パーツ番号 08-09-05 ・ JavaScript使用

シェイクエラーフィードバック

クリックするとボタンが左右に震え、赤いエラーメッセージが現れます。WordPressのフォーム送信エラー通知に使えます。

clickjsinput

プレビュー

ソースコード

HTML

<div class="d08-09-05-wrap">
          <button class="d08-09-05-btn" type="button">送信する</button>
          <p class="d08-09-05-msg">入力内容をご確認ください</p>
        </div>

CSS

.d08-09-05-wrap{display:flex;flex-direction:column;align-items:center;gap:10px}
        .d08-09-05-btn{background:#fff;border:1.5px solid #e2e2e8;border-radius:10px;padding:13px 30px;font-size:14px;font-weight:700;color:#2a2d3a;cursor:pointer;transition:border-color .2s,background .2s}
        .d08-09-05-btn.is-error{animation:d08-09-05-shake .5s cubic-bezier(.3,0,.3,1);border-color:#ff3b52;background:#fff5f6}
        @keyframes d08-09-05-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-9px)}40%{transform:translateX(7px)}60%{transform:translateX(-5px)}80%{transform:translateX(3px)}}
        .d08-09-05-msg{font-size:12px;font-weight:600;color:#ff3b52;opacity:0;transform:translateY(-4px);transition:opacity .25s,transform .25s;margin:0}
        .d08-09-05-msg.is-show{opacity:1;transform:translateY(0)}

JavaScript

(function(){
        var btn=document.querySelector('#item-08-09-05 .d08-09-05-btn');
        var msg=document.querySelector('#item-08-09-05 .d08-09-05-msg');
        if(!btn||!msg)return;
        var timer=null;
        btn.addEventListener('click',function(){
          btn.classList.remove('is-error');void btn.offsetWidth;btn.classList.add('is-error');
          msg.classList.add('is-show');
          if(timer)clearTimeout(timer);
          timer=setTimeout(function(){msg.classList.remove('is-show');},2200);
        });
      })();

クラス名 .d08-09-05 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。