OmochiXを検索

Esc で閉じる

UIパーツの動き #011

トースト通知 Toast notification

画面の端から通知が滑り込む

「保存しました」の通知が下から滑り込み、数秒とどまってから同じ方向へ消えます。

調整する

値を変えるとプレビューに反映され、「プロンプトをコピー」「コードをコピー」も調整後の内容になります。

AIへの頼み方

保存したときのトースト通知を作って。下から0.4秒で滑り込んで、3秒たったら同じ方向に消えて。

動きの仕様

  • 画面下中央に固定(position: fixed; bottom: 24px)
  • 登場は translateY(40px)→0 と不透明度0→1 を約0.4秒、cubic-bezier(.22,1,.36,1)
  • 3秒後に逆方向へ退場。ホバー中は退場を止める
  • role="status" aria-live="polite" を付けて読み上げに対応する

使いどころ

保存・送信・コピー完了など、操作の結果を短く知らせるとき。

コピーされるプロンプト全文を見る
「トースト通知(Toast notification)」の動きを実装してください。
OmochiX Learn の動く見本 #011(UIパーツの動き)です。

頼み方の例: 保存したときのトースト通知を作って。下から0.4秒で滑り込んで、3秒たったら同じ方向に消えて。
どんな動きか: 画面の端から通知が滑り込む
見本で起きること: 「保存しました」の通知が下から滑り込み、数秒とどまってから同じ方向へ消えます。
仕様:
- 画面下中央に固定(position: fixed; bottom: 24px)
- 登場は translateY(40px)→0 と不透明度0→1 を約0.4秒、cubic-bezier(.22,1,.36,1)
- 3秒後に逆方向へ退場。ホバー中は退場を止める
- role="status" aria-live="polite" を付けて読み上げに対応する
使いどころ: 保存・送信・コピー完了など、操作の結果を短く知らせるとき。
調整した値:
- 出てから消えるまでの1周期は3.6s(既定)
- 下からの移動量は40px(既定)
- アイコンの色: #2fb37a(既定)
- 動き方は「やわらか」(既定)

実装の条件:
- HTML / CSS(必要なら素のJavaScript)で、外部ライブラリは使わない
- 見本の形・タイミング・イージングの数値はそのまま使い、文字・色・素材だけ今作っているものに合わせる
- prefers-reduced-motion: reduce の環境では動きを止めるか最小限にする
- 使った技術: CSS

見本(動くプレビューと参考コード): https://omochix.com/learn/motion/toast/

コード

プレビューで動いているものと同じコードです。HTMLに貼り付ければそのまま動きます。

HTML / CSS / JavaScript
<!-- トースト通知 (Toast notification) | OmochiX Learn 動く見本 #011 | https://omochix.com/learn/motion/toast/ -->

<style>
.ts{position:absolute;left:50%;bottom:18px;display:flex;align-items:center;gap:10px;padding:12px 18px;border-radius:12px;background:var(--text);color:var(--bg);font:600 15px/1 system-ui,sans-serif;box-shadow:0 10px 30px rgba(0,0,0,.2);animation:ts var(--p-cycle,3.6s) var(--p-ease,cubic-bezier(.22,1,.36,1)) infinite}
.ts__icon{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--p-color,#2fb37a);color:#fff;font-size:13px}
@keyframes ts{0%{transform:translate(-50%,var(--p-distance,40px));opacity:0}12%,75%{transform:translate(-50%,0);opacity:1}88%,100%{transform:translate(-50%,var(--p-distance,40px));opacity:0}}
</style>

<div class="ts"><span class="ts__icon">✓</span>保存しました</div>