--- title: background-position slug: Web/CSS/background-position tags: - CSS - CSS Background - CSS Property - Reference - 'recipe:css-property' translation_of: Web/CSS/background-position ---
background-position
は CSS のプロパティで、それぞれの背景画像の初期位置を設定します。位置は {{cssxref("background-origin")}} で設定された位置レイヤーからの相対です。
このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
/* キーワード値 */ background-position: top; background-position: bottom; background-position: left; background-position: right; background-position: center; /* <percentage> 値 */ background-position: 25% 75%; /* <length> 値 */ background-position: 0 0; background-position: 1cm 2cm; background-position: 10ch 8em; /* 複数の画像 */ background-position: 0 0, center; /* 辺からのオフセット値 */ background-position: bottom 10px right 20px; background-position: right 3em bottom 10px; background-position: bottom 10px right; background-position: top right 10px; /* グローバル値 */ background-position: inherit; background-position: initial; background-position: unset;
background-position
プロパティは1つ以上の <position>
値をカンマで区切って指定します。
<position>
center
とみなされます。3つまたは4つの値が使用された場合は、 length-percentage 値はその前のキーワード値に対するオフセットです。値1つの構文: 値は以下のようになります。
center
のキーワード値の場合は、画像を中央揃えにします。top
、 left
、 bottom
、 right
のうちの一つの場合。アイテムを配置する辺を指定します。もう一方の寸法が50%に設定されていれば、指定された端までの間の中央に配置されます。値2つの構文: 1つ目の値が X を定義し、もう1つの値が Y を定義します。両方が以下の値を取ることができます。
top
、 left
、 bottom
、 right
のうちの一つの場合。ここで left
または right
が指定された場合は、これが X 座標を定義し、もう一方の値が Y 座標になります。 top
または bottom
が指定された場合は、これが Y 座標を定義し、もう一方の値が X 座標を定義します。left
または right
の場合、この値は上辺からの相対的な Y 座標を定義します。もう一方の値が top
または bottom
の場合、この値は左辺からの相対的な X 座標を定義します。両方の値が <length>
または <percentage>
の値である場合は、最初の値が X 座標を定義し、2番目の値が Y 座標を定義します。top
または bottom
である場合、もう一方の値を top
または bottom
にすることはできません。一方の値が left
または right
である場合、もう一方の値を left
または right
にすることはできません。すなわち、例えば top top
や left right
は妥当ではありません。top left
または 0% 0%
です。値3つの構文: 2つの値はキーワード値で、3つ目の値はその前の値のオフセットです。
top
, left
, bottom
, right
, center
のうちの1つです。ここで left
または right
が指定された場合は、これは X 座標を定義します。 top
または bottom
が指定された場合は、これは Y 座標を定義し、もう一方のキーワード値が X 座標を定義します。値4つの構文: 1番目と3番目の値は、X と Y を定義するキーワード値で、2番目と4番目の値は、先行する X と Y のキーワード値のオフセットです。
top
, left
, bottom
, right
のうちの1つです。ここで left
または right
が指定された場合、これは X を定義します。 top
または bottom
が指定された場合、これは Y を表し、もう一方のキーワード値が X を表します。パーセント値について
background-position: 25% 75%
は、画像の左から 25%、上から 75% の位置にある点が、コンテナの左から 25%、上から 75% の位置にあるコンテナーの点に配置されることを意味します。(コンテナーの幅 - 画像の幅) * (position x%) = (x オフセット値)
(コンテナーの高さ - 画像の高さ) * (position y%) = (y オフセット値)
X 軸を例にすると、幅 300px の画像があり、それを幅 100px のコンテナーに入れて、 background-size を auto に設定して使用しているとします。
100px - 300px = -200px (コンテナーと画像の差)
ですから、位置のパーセント値が -25%, 0%, 50%, 100%, 125% であった場合、画像とコンテナーの橋のオフセット値は以下のようになります。
-200px * -25% = 50px
-200px * 0% = 0px
-200px * 50% = -100px
-200px * 100% = -200px
-200px * 125% = -250px
そのため、この例の結果の値では、画像の左端がコンテナーの左端からオフセットされています。
背景サイズが指定された軸のコンテナーのサイズと等しい場合、その軸のパーセンテージ位置は、「コンテナーと画像の差」がゼロになるので、何の効果もないことは言及しておく価値があります。絶対値を使ってオフセットする必要があります。
{{cssinfo}}
以下の3つの例は、 {{cssxref("background")}} を使って黄色い四角形の要素とその中に星の画像を作成します。それぞれの例で、星は異なる位置にあります。加えて、3番目の例では1つの要素内にある2つの異なる背景画像の位置を指定する方法を示しています。
<div class="exampleone">Example One</div> <div class="exampletwo">Example Two</div> <div class="examplethree">Example Three</div>
/* すべての <div> で共有される */ div { background-color: #FFEE99; background-repeat: no-repeat; width: 300px; height: 80px; margin-bottom: 12px; } /* これらの例は background 一括指定プロパティを使用しています */ .exampleone { background: url("https://mdn.mozillademos.org/files/11987/startransparent.gif") #FFEE99 2.5cm bottom no-repeat; } .exampletwo { background: url("https://mdn.mozillademos.org/files/11987/startransparent.gif") #FFEE99 left 4em bottom 1em no-repeat; } /* 複数の背景画像: 各画像は対応する位置スタイルに、 最初に指定されたものから順に対応付けられます。 */ .examplethree { background-image: url("https://mdn.mozillademos.org/files/11987/startransparent.gif"), url("https://mdn.mozillademos.org/files/7693/catfront.png"); background-position: 0px 0px, right 3em bottom 2em; }
{{EmbedLiveSample('Positioning_background_images', 420, 200)}}
仕様書 | 状態 | 備考 |
---|---|---|
{{SpecName('CSS3 Backgrounds', '#background-position', 'background-position')}} | {{Spec2('CSS3 Backgrounds')}} | 複数の背景のサポートを追加。4個の値を持つ構文、実装に一致するように割合の定義を調整。 |
{{SpecName('CSS2.1', 'colors.html#propdef-background-position', 'background-position')}} | {{Spec2('CSS2.1')}} | キーワード値と {{cssxref("<length>")}} および {{cssxref("<percentage>")}} の値の混合指定を許容。 |
{{SpecName('CSS1', '#background-position', 'background-position')}} | {{Spec2('CSS1')}} | 初回定義。 |
{{Compat("css.properties.background-position")}}
background-position
が異なる数の {{cssxref("<position>")}} の値を持つ2つの値の {{cssxref("transition")}} ができないというバグがあります。例えば background-position: 10px 10px;
と background-position: 20px 20px, 30px 30px;
などです({{bug(1390446)}} を参照)。 Firefox の新しいパラレル CSS エンジン (Quantum CSS または Stylo と呼ばれており、 Firefox 57 でリリース予定) では修正されています。