テック技報最新号へ →
CSS

メニューは中央からではなく、開いたボタン側の角から拡大させる(transform-origin)

右上のボタンから開くメニューは transform-origin: top right にして、ボタンのある角から広がるように見せる。

@aviralj02 · 2026-11-01
#transform-origin#アニメーション#メニュー#ポップオーバー#マイクロインタラクション

どんな時に使う?

  • ドロップダウンやコンテキストメニュー、ポップオーバーを scale でふわっと出すとき。
  • 既定の transform-origin は要素の中央なので、そのままだとメニューが宙に浮いた中心から膨らみ、「どのボタンから出てきたのか」が伝わりにくい。動きの起点をトリガーに合わせると、操作とのつながりが自然になる。

コード

css
@keyframes menu-open {
  from { opacity: 0; scale: 0.95; }
  to   { opacity: 1; scale: 1; }
}

/* 右上のボタンから下向きに開くメニュー */
.menu {
  transform-origin: top right;
  animation: menu-open 150ms ease-out;
}

/* 左下から上向きに開くなら */
.menu--up-left {
  transform-origin: bottom left;
}
  • 縮小幅は 0.95 程度の小さな値にすると、主張しすぎない。
  • Tailwind なら origin-top-right に animate-in fade-in zoom-in-95 duration-150(tailwindcss-animate 系)で同じことができる。

注意点

出典

X の元の投稿を開く