background-position-yの使い方と代替方法 | 要素の背景画像を縦方向に自由に配置


background-position-y は、CSSで要素の背景画像の垂直方向の位置を調整するプロパティです。これは、「background-position」プロパティの垂直方向の値を指定するために使用されます。

構文

background-position-y: <値>;

background-position-y には、以下の値を指定できます。

  • キーワード
    以下のキーワードを使用できます。
    • top: 要素の上部
    • center: 要素の中央
    • bottom: 要素の下部
    • baseline: 要素のベースライン
  • パーセンテージ
    要素の高さを百分率で指定できます。50%は要素の中央、100%は要素の下部、0%は要素の上部を表します。
  • 長さ
    ピクセル、センチメートル、インチなどの長さの単位で指定できます。正の値は要素の下部からのオフセットを、負の値は要素の上部からのオフセットを表します。
/* 背景画像を要素の下部中央に配置する */
.element {
  background-image: url('example.jpg');
  background-position-y: bottom center;
}

/* 背景画像を要素の上から 20 ピクセル下に配置する */
.element {
  background-image: url('example.jpg');
  background-position-y: 20px;
}

/* 背景画像を要素の高さの 75%の位置に配置する */
.element {
  background-image: url('example.jpg');
  background-position-y: 75%;
}
  • background-origin プロパティと組み合わせて、背景画像の位置決めの基準点を設定することもできます。
  • background-repeat プロパティと組み合わせて、背景画像の繰り返しパターンを制御することもできます。
  • background-position-y は、単独で指定することも、background-position-x と一緒に指定して背景画像の水平方向と垂直方向の位置を同時に設定することもできます。


例 1: 背景画像を要素の下部中央に配置する

.example1 {
  background-image: url('image1.jpg');
  background-position-y: bottom center;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}

この例では、image1.jpg という画像が .example1 要素の下部中央に配置されます。

例 2: 背景画像を要素の上から 20 ピクセル下に配置する

.example2 {
  background-image: url('image2.jpg');
  background-position-y: 20px;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}

この例では、image2.jpg という画像が .example2 要素の上から 20 ピクセル下に配置されます。

例 3: 背景画像を要素の高さの 75%の位置に配置する

.example3 {
  background-image: url('image3.jpg');
  background-position-y: 75%;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}

この例では、image3.jpg という画像が .example3 要素の高さの 75%の位置に配置されます。

例 4: 背景画像を要素の左上に配置し、横方向に繰り返す

.example4 {
  background-image: url('pattern.jpg');
  background-position: left top;
  background-repeat: repeat-x;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}

この例では、pattern.jpg という画像が .example4 要素の左上に配置され、横方向に繰り返されます。

.example5 {
  background-image: url('pattern2.jpg');
  background-position: center center;
  background-repeat: repeat-y;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}


flexbox を使用する

flexbox レイアウトを使用すると、要素とそのコンテンツを柔軟に配置できます。 align-items プロパティを使用して、要素内の垂直方向の配置を制御できます。

.element {
  display: flex;
  flex-direction: column; /* 要素を縦方向に並べる */
  align-items: center; /* コンテンツを中央に配置する */
  background-image: url('image.jpg');
}

この例では、.element 要素とそのコンテンツが縦方向に中央揃えされます。背景画像は要素全体に表示されます。

grid レイアウトを使用する

grid レイアウトを使用すると、要素をグリッド状に配置できます。 place-items プロパティを使用して、要素内の垂直方向の配置を制御できます。

.element {
  display: grid;
  place-items: center; /* アイテムを中央に配置する */
  background-image: url('image.jpg');
}

この例では、.element 要素とそのコンテンツがグリッドの中央に配置されます。背景画像は要素全体に表示されます。

calc() 関数を使用する

calc() 関数を使用して、要素の垂直方向の位置を計算できます。 background-position-y プロパティに calc() 関数を直接渡すことができます。

.element {
  background-image: url('image.jpg');
  background-position-y: calc(50% - 20px); /* 要素の高さを半分にして、20ピクセル上へ移動する */
}

この例では、.element 要素の背景画像は、要素の高さを半分にした位置から 20 ピクセル上に配置されます。

margin プロパティを使用する

margin プロパティを使用して、要素の上部と下部の余白を設定できます。これにより、背景画像の位置を間接的に調整できます。

.element {
  background-image: url('image.jpg');
  margin-top: 20px; /* 要素の上部に20ピクセルの余白を設定する */
}

この例では、.element 要素の背景画像は、要素の上部から 20 ピクセル下に配置されます。

padding プロパティを使用する

padding プロパティを使用して、要素の内側の余白を設定できます。これにより、背景画像の位置を間接的に調整できます。

.element {
  background-image: url('image.jpg');
  padding-top: 20px; /* 要素の上部に20ピクセルの余白を設定する */
}

上記以外にも、状況によっては transform プロパティや position プロパティを使用する方法もあります。最適な代替方法は、それぞれの要件によって異なります。

「background-position-y」を使用する利点と欠点

「background-position-y」を使用する主な利点は、シンプルでわかりやすいことです。構文も簡単で、初心者でも簡単に理解できます。

一方、欠点としては、flexbox や grid レイアウトなどのレイアウトシステムに比べて柔軟性に欠ける点が挙げられます。複雑なレイアウトを作成する場合には、これらのレイアウトシステムの方が適している場合があります。