ホームページ制作 オフィスオバタ

背景画像を画面中央+300pxにする。

背景画像はスタイルシートの指定で、左寄せ、中央寄せ、右寄せ、上寄せ、下寄せがあります。
ですが、今回次のようなことをする必要がありました。

左右中央寄せで+300px右へずらす

この指定で、頭を悩ませたのが「中央位置から+300px」です。
なぜならば、画面サイズを変えても中央位置+300pxをキープしなければいけないためです。

そんなことができるのか?
と思いつつ、いつものようにググりました。

論より証拠。できたものがこちら

何はともあれ、できたものがこちらです。

(1)普通の中央寄せ

背景画像を普通に中央寄せしたバージョンです。
ウィンドウサイズを広げたり、縮めたりしても、背景画像は中央位置になります。

(2)中央一+300px右へずらす

背景画像を中央寄席+300px右へずらしたバージョンです。
ウィンドウサイズを広げたり、縮めたりしても、中央位置+300pxがキープされます。

背景画像を中央位置+300pxにする指定方法

実際に中央位置+300pxにしている具体的な方法について以下に記載します。

スタイルシートの記述

#sample
{
	height: 400px;
	background-image: url(bg_img.png);
	background-repeat: no-repeat;
	background-position: left calc(50% + 300px) center;
}

スタイルシートの横位置指定で、なにやら見慣れない記述があります。
それがこちらです。

left calc(50% + 300px)

通常の横中央ならば、centerのみですが、left指定になっています。
いったいどういう仕組みなのでしょうか?

(疑問1)calcは何?

calc()は、計算をする指定です。
calcを使うと、スタイルシート内で計算ができます。
+300pxとすることで、300px右へずらしています。

(疑問2)50%とはどういう意味?

例えば、left 100px というう指定は、左から100pxという意味になります。
では、left 50% と指定すると、左から50%の位置。つまり中央寄せという意味になります。
中央寄せをベースにするため、50%指定をしています。

(疑問3)なぜleft指定なのか?

横中央にする場合、centerを指定します。
ですが、今回の例ではleft指定となっています。

これはcenter指定では、calc()が動作しないためです。
おそらく仕様だと思われますが、calc()を使うために、left指定にしています。
逆にright指定でも大丈夫です。ただしその場合、+300pxにすると、左にずれます。(左右が逆になります)

スタイルシートの進化は目覚ましい

web制作を始めたころは、どちらかというとHTMLで装飾をするのが主流でした。
画像を細かく切って四隅にちりばめたり、見出しを画像にしたりなど、スタイルシートは補助的な役割でした。

ですが昨今は、HTML側では装飾を一切行わず、スタイルシートだけで装飾します。
しかも、画像を使わなくても見出しの装飾ができたりと、とても進化しています。

写真や挿絵は画像にする必要がありますが、装飾という点においては、スタイルシートのみで完結します。

しかも最近では、動的な動作(簡易アニメーションなど)もスタイルシートでできます。
HTMLを組むとは、もはや「スタイルシートを構築する」ということなのです。

モバイルバージョンを終了