ホームページ >ウェブフロントエンド >CSSチュートリアル >「background-size: cover」と「background-attachment:fixed」を使用すると、クリップされた背景画像が予期せず切り取られるのはなぜですか?

「background-size: cover」と「background-attachment:fixed」を使用すると、クリップされた背景画像が予期せず切り取られるのはなぜですか?

DDD
DDDオリジナル
2024-11-24 22:44:12866ブラウズ

Why is my clipped background image unexpectedly cropped when using `background-size: cover` and `background-attachment: fixed`?

CSS で切り抜いた背景画像 background-size: cover background-attachment:fixed

CSS プロパティの background-size:cover と background-attachment:fixed on を使用する場合コンテナ要素の場合、要素がビューポートのフル サイズでない場合、背景画像が予期せずクリップされる可能性があります。これは、以下で説明するように、2 つのプロパティの組み合わせによるものです。

background-attachment:fixed の効果

background-attachment:fixed 背景画像は、position:fixed 要素のように動作します。つまり、ドキュメントの通常のフローの一部ではなくなり、ビューポートに対して静止したままになります。

background-size との相互作用: cover

background-size: cover は、コンテナ要素全体をカバーするように背景画像を拡大縮小します。 Background-attachment:fixed と組み合わせると、コンテナ要素だけでなくビューポート全体をカバーするように画像が拡大縮小されることを意味します。

背景画像のクリッピング

コンテナ要素がビューポートより小さい場合、背景イメージはコンテナ要素に垂直に収まるようにトリミングされます。ただし、ビューポートの幅全体をカバーするために水平方向に拡大縮小されます。これにより、画像の左側と右側が切り取られる可能性があります。

解決策

残念ながら、目的の効果を実現する方法はありません (画像は垂直方向または水平方向に切り取られますが、両方は切り取られません)。コンテナ要素を中心に配置) 純粋な CSS を使用します。これは、CSS で固定位置が機能する基本的な方法によるものです。

目的の効果を実現するには、JavaScript を使用してウィンドウのスクロール位置を基準にして背景位置プロパティを手動で更新し、固定位置をシミュレートする必要があります。背景サイズを計算しながら配置: コンテナ要素を基準にしてカバーします。

以上が「background-size: cover」と「background-attachment:fixed」を使用すると、クリップされた背景画像が予期せず切り取られるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。