同様の質問が何度も寄せられていることは承知していますが、実際に私にとって有効な解決策をまだ見つけていません。次の問題をイメージしてください。
状況:
- ボディには、垂直方向と水平方向の両方で繰り返される固定されていない背景画像があります。
- 最初の背景画像の上に 2 番目の透明な背景画像が配置されるはずです。
制約:
- 2 番目の背景は、本文の背景と同様に、ドキュメント全体に広がるはずです。注意: ビューポートだけでなく、ドキュメント全体。
- 本文の高さがドキュメントの高さよりも小さい (つまり、スクロールバーがない) 場合でも、2 番目の背景はビューポートの下部まで伸ばさなければなりません (したがって、100% html および/または本文の高さで動作するソリューションは問題外です)。
- 2 番目の背景の位置を固定することはできません。これは、スクロール時に何らかの視差効果が発生するためです。両方のイメージが実際には 1 つであるという錯覚を維持する必要があります。
- ボディには、マージンやパディングを含めることができます。いずれの背景もドキュメント全体をカバーする必要があります。
- ボディに 2 番目の背景画像 ("
background-image: url(), url();
") を使用することは、下位互換性の理由からオプションではありません。 - JavaScript はありません。
- 明らかに、実際に 2 つの画像を 1 つにマージする必要はありません。:)
私はこの問題についてしばらく考えていましたが、HTML と CSS2 だけではこれは不可能であるという結論に達しました。私は間違っていることが証明されたいと思っています。