DESIGN / CODE / INFRA / AI

解説

見た目だけ動かすと隣の位置は?relative・transform・marginを比べよう

同じ24pxの横移動でも、隣の箱へ与える影響は違う。relative・translateX・margin-leftを切り替え、表示位置と元の配置場所を作例で確認する。

見た目だけ動かすと隣の位置は?relative・transform・marginを比べよう
保存リストを見る →
この記事の道しるべ 5項目

ボタンを少し右へ動かしたら、隣の文字まで動いた。反対に、見た目だけ動いて隣の箱と重なったことはないかな。同じ距離の指定でも、配置へ与える影響が違うよ。

今回は横並びの二つの箱で、relative、transform、marginを比べる。必要なのはブラウザだけ。記事下の作例は、架空の箱の表示を切り替えるもので、保存や通信はしない。

relativeは、元の場所を残して表示位置をずらす

.target {
  position: relative;
  left: 24px;
}

position: relativeの要素は、通常の配置で確保された場所を残したまま、leftなどで表示位置をずらせる。隣の箱は、移動後の見た目を避けて自動的に右へ押されるわけではないんだ。

作例は左の箱だけを右へ24px動かす。隣の箱の位置が変わらないため、表示が重なることもある。「移動できた」だけで完成とせず、周囲も確認しよう。

transformも通常の配置を押し広げない

.target {
  transform: translateX(24px);
}

translateXは、横方向の変換を指定する関数。今回の条件では、これも元の配置場所を変えずに表示を右へ移す。隣の箱は動かないよ。

ただしrelativeとtransformは、重なり方や子要素の座標の扱いまで同じ機能ではない。transformには積み重ねコンテキストを作るなどの効果もある。今回は「左の箱の表示」と「隣の箱の位置」に絞って比べよう。

marginを増やすと、配置の間隔にも影響する

.target {
  margin-left: 24px;
}

margin-leftは外側の余白。作例の固定幅の横並びでは、左の箱の前に24pxを足すと、左の箱だけでなく、その後ろの箱も右へ移る。

この結果は、作例の横並び条件での確認。幅の自動調整や折り返しがあるレイアウトまで、常に同じ位置関係になるという意味ではないよ。

作例の数値と隣の箱を見よう

  1. 「移動なし」を選び、二つの箱の位置を確認する。
  2. relativeを選ぶ。左の箱は動くが、隣の箱の位置は変わらない。
  3. transformを選び、同じ観点で比べる。
  4. marginを選び、隣の箱も24px動くことを確認する。
  5. 「最初から試す」で移動なしへ戻す。

作例は、基準の状態に対する表示位置の差を測る。狭い画面では作例の枠内を横にスクロールできるけれど、ページ全体は広げない作りだよ。

クリック領域や小さい画面も確認する

見た目が重なると、文字が読めても別の要素を押しづらくなることがある。移動後の重なり、フォーカス表示、拡大時の折り返しも見ると確認しやすい。

編集部ではChromiumで三つの指定、隣の箱の変位、リセットとスマホ幅を確認した。余白の作り分けはgapとmargin、重なり以外の見た目と順序の違いはorderと読む順番も参照してね。

動かしてみよう:表示位置と隣の箱

relative・transform・marginを選び、二つの箱の位置の差を比べよう。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。