flexboxとgridでレイアウトを柔軟に

2024-04-08

CSSで2つのdivを重ねる方法

<div id="div1">
  <p>Div 1の内容</p>
</div>
<div id="div2">
  <p>Div 2の内容</p>
</div>

CSS

#div1 {
  position: relative;
  width: 200px;
  height: 200px;
  background-color: red;
}

#div2 {
  position: absolute;
  top: 50px;
  left: 50px;
  width: 100px;
  height: 100px;
  background-color: blue;
}

解説

  1. position プロパティは、要素の表示位置を指定します。

    • relative: 要素を元の位置から相対的に移動します。
    • absolute: 要素を親要素の左上隅を基準に絶対的な位置に配置します。
  2. top, left, bottom, right プロパティは、要素の相対的な位置を指定します。

    • top: 要素の上端を親要素の上端からの距離で指定します。
  3. z-index プロパティは、要素の重なり順序を指定します。

    値が大きい要素ほど前面に表示されます。

  • flexbox を使用して要素を重ねる
  • grid レイアウトを使用して要素を重ねる



<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CSSで2つのdivを重ねる</title>
  <style>
    #div1 {
      position: relative;
      width: 200px;
      height: 200px;
      background-color: red;
    }

    #div2 {
      position: absolute;
      top: 50px;
      left: 50px;
      width: 100px;
      height: 100px;
      background-color: blue;
    }
  </style>
</head>
<body>
  <div id="div1">
    <p>Div 1の内容</p>
  </div>
  <div id="div2">
    <p>Div 2の内容</p>
  </div>
</body>
</html>

実行方法

  1. 上記のコードを index.html という名前で保存します。
  2. ブラウザで index.html を開きます。

結果

説明

  • #div1position: relative であり、元の位置から相対的に移動します。
  • #div2position: absolute であり、#div1 の左上隅を基準に絶対的な位置に配置されます。
  • top: 50pxleft: 50px は、#div2 の上端と左端を #div1 の上端と左端からそれぞれ50px離れた位置に配置します。
  • width: 100pxheight: 100px は、#div2 の幅と高さをそれぞれ100pxに設定します。
  • background-color: blue は、#div2 の背景色を青色に設定します。
  • marginpadding プロパティを使用して、2つのdivの間隔を調整できます。



CSSで2つのdivを重ねるその他の方法

flexbox

<div class="container">
  <div class="div1">
    <p>Div 1の内容</p>
  </div>
  <div class="div2">
    <p>Div 2の内容</p>
  </div>
</div>
.container {
  display: flex;
}

.div1 {
  background-color: red;
  width: 200px;
  height: 200px;
}

.div2 {
  background-color: blue;
  width: 100px;
  height: 100px;
  margin: auto;
}
  • display: flex は、親要素をフレックスコンテナに変換します。
  • margin: auto は、子要素を水平方向に中央に配置します。

grid

<div class="container">
  <div class="div1">
    <p>Div 1の内容</p>
  </div>
  <div class="div2">
    <p>Div 2の内容</p>
  </div>
</div>
.container {
  display: grid;
}

.div1 {
  background-color: red;
  width: 200px;
  height: 200px;
}

.div2 {
  background-color: blue;
  width: 100px;
  height: 100px;
  grid-area: 1 / 1;
}
  • grid-area: 1 / 1 は、子要素をグリッドの最初の行と最初の列に配置します。

CSSで2つのdivを重ねる方法はいくつかあります。

  • position: relativeposition: absolute を使用する
  • grid を使用する

css html overlap


テーブルデザインをワンランクアップ!TBODY要素間にスペースを入れて見やすくする

HTMLのTBODY要素は、テーブル内の行グループを表します。デフォルトでは、TBODY要素間にスペースはありませんが、CSSを使用して、上下に余白を追加することができます。方法TBODY要素間にスペースを入れる方法はいくつかあります。marginプロパティを使用して、TBODY要素の上下に余白を設定することができます。...


これさえあれば大丈夫!「Overflow:hidden dots at the end」のサンプルコード集

「Overflow:hidden dots at the end」は、HTMLとCSSを用いて、テキストが要素の幅を超えた場合に、末尾に省略記号(…)を表示するテクニックです。これは、長い見出しや文章を短く表示したい場合に有効です。仕組みこのテクニックは、以下の2つのCSSプロパティを組み合わせて実現します。...


HTML5ローカルストレージでWebアプリケーションの可能性を広げる: オフライン対応、データキャッシュ、ユーザー設定など

ローカルストレージアイテムの有効期限は、ブラウザによって異なります。 一般的には、アイテムはブラウザを閉じるまで保存されますが、ブラウザの再起動やデバイスの再起動によって消去される場合もあります。ローカルストレージアイテムの有効期限を制御する方法はいくつかあります。...


【CSS】position: fixed; で要素を固定配置!でも、ちょっと違う…

position: fixed; は、要素をブラウザウィンドウに対して固定位置に配置します。しかし、場合によっては、要素を親要素に対して固定位置に配置したいこともあります。この場合、position: fixed; と position: relative; を組み合わせることで実現できます。...


【最新版】Angular 2 ボタン無効化のベストプラクティス:パフォーマンスとアクセシビリティを向上させる

disabled 属性を使う最も基本的な方法は、disabled 属性をボタン要素に直接追加することです。この方法では、常にボタンを無効化することができます。フォームコントロールの状態にバインドするフォームを使用している場合は、フォームコントロールの状態にバインドして、動的にボタンを無効化することができます。...