パーツ番号 11-14-12 ・ JavaScript使用
機内モード風のアイコントグル
スイッチをオンにすると飛行機アイコンが色付き・チルト演出し、通信が停止したことを伝える機内モード風トグル。WordPressの会員設定ページや通知設定UIのオン/オフ切替に応用できます。
プレビュー
ソースコード
HTML
<div class="d11-14-12-wrap">
<div class="d11-14-12-frame">
<div class="d11-14-12-icon" id="d1968Icon">
<svg viewBox="0 0 24 24" width="34" height="34"><path d="M21 15l-7-2v-5l3 1V7l-5-2-5 2v2l3-1v5l-7 2v2l7-1.5V21l-2 1v1l3-.5 3 .5v-1l-2-1v-3.5l7 1.5v-2z"/></svg>
</div>
<p class="d11-14-12-label" id="d1968Label">機内モード: オフ</p>
<button type="button" class="d11-14-12-switch" id="d1968Switch" role="switch" aria-checked="false">
<span class="d11-14-12-knob"></span>
</button>
</div>
</div>CSS
.d11-14-12-wrap{width:100%;display:flex;flex-direction:column;align-items:center}
.d11-14-12-frame{width:100%;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-radius:12px;background:#f8f9fb;border:1px solid #eef0f3}
.d11-14-12-icon svg{display:block}
.d11-14-12-icon svg path{fill:#9ca3af;transition:fill .25s}
.d11-14-12-icon.on svg path{fill:#4f46e5}
.d11-14-12-icon.on{animation:d1968Tilt .4s ease}
@keyframes d1968Tilt{0%{transform:rotate(0)}50%{transform:rotate(18deg)}100%{transform:rotate(0)}}
.d11-14-12-label{margin:0;font-size:11.5px;font-weight:700;color:#374151;text-align:center}
.d11-14-12-switch{width:44px;height:24px;border-radius:99px;background:#d1d5db;position:relative;border:none;cursor:pointer;transition:background .25s;padding:0}
.d11-14-12-switch.on{background:#4f46e5}
.d11-14-12-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .25s;box-shadow:0 1px 3px rgba(0,0,0,.2);display:block}
.d11-14-12-switch.on .d11-14-12-knob{transform:translateX(20px)}JavaScript
(function(){
var root=document.querySelector('.d11-14-12');
var icon=root.querySelector('#d1968Icon');
var label=root.querySelector('#d1968Label');
var sw=root.querySelector('#d1968Switch');
var on=false;
sw.addEventListener('click',function(){
on=!on;
icon.classList.toggle('on',on);
sw.classList.toggle('on',on);
sw.setAttribute('aria-checked',String(on));
label.textContent=on?'機内モード: オン・通信を停止しました':'機内モード: オフ';
});
})();クラス名 .d11-14-12 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。