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

パーツ番号 08-13-07 ・ JavaScript使用

方向で回転が反転する装飾アイコン

下方向スクロールで時計回り、上方向スクロールで反時計回りに回転する装飾アイコンです。WordPressの見出し脇や区切り線のアクセントに遊び心を加えられます。

scrolljs3d

プレビュー

ソースコード

HTML

<div class="d08-13-07-stage">
          <div class="d08-13-07-iconwrap">
            <svg class="d08-13-07-icon" viewBox="0 0 24 24" width="46" height="46" aria-hidden="true">
              <path fill="#f59e0b" d="M12 2l1.8 4.8 5.1.4-3.9 3.3 1.3 5-4.3-2.8-4.3 2.8 1.3-5-3.9-3.3 5.1-.4z"/>
            </svg>
          </div>
          <div class="d08-13-07-scroll">
            <div class="d08-13-07-body">
              <p>↓ 下スクロールで時計回り / ↑ 上スクロールで反時計回り</p>
              <div class="d08-13-07-block"></div>
              <div class="d08-13-07-block"></div>
              <div class="d08-13-07-block"></div>
            </div>
          </div>
        </div>

CSS

.prev.d08-13-07{padding:0;display:block}
        .d08-13-07-stage{position:relative;width:100%;height:100%;min-height:260px;overflow:hidden;background:#fffbeb}
        .d08-13-07-iconwrap{
          position:absolute;top:16px;left:50%;transform:translateX(-50%);z-index:2;
        }
        .d08-13-07-icon{animation-duration:2.4s;animation-timing-function:linear;animation-iteration-count:infinite;animation-play-state:paused}
        @keyframes d08-13-07-cw{to{transform:rotate(360deg)}}
        @keyframes d08-13-07-ccw{to{transform:rotate(-360deg)}}
        .d08-13-07-stage.is-down .d08-13-07-icon{animation-name:d08-13-07-cw;animation-play-state:running}
        .d08-13-07-stage.is-up .d08-13-07-icon{animation-name:d08-13-07-ccw;animation-play-state:running}
        .d08-13-07-scroll{position:absolute;inset:0;overflow-y:auto;padding-top:78px}
        .d08-13-07-body{padding:16px}
        .d08-13-07-body p{font-size:11.5px;color:#b45309;margin:0 0 12px;text-align:center}
        .d08-13-07-block{height:80px;border-radius:8px;margin-bottom:12px;background:linear-gradient(135deg,#fef3c7,#fcd34d)}

JavaScript

(function(){
        var stage=document.querySelector('.d08-13-07-stage');
        if(!stage)return;
        var scroller=stage.querySelector('.d08-13-07-scroll');
        var last=0;
        scroller.addEventListener('scroll',function(){
          var top=scroller.scrollTop;
          if(top>last+2){stage.classList.add('is-down');stage.classList.remove('is-up');}
          else if(top<last-2){stage.classList.add('is-up');stage.classList.remove('is-down');}
          last=top<=0?0:top;
        });
      })();

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