背景圖隨容器尺寸變化自動縮放,始終完整顯示(不裁剪、不變形、不留白),即 background-size: contain 效果。
.bg-container {
width: 100%;
height: 300px; /* 或任意高度 */
background-image: url('image.jpg');
background-size: contain; /* 關鍵:縮放至完全包含 */
background-repeat: no-repeat;
background-position: center; /* 居中顯示 */
}
IE8 不支持 background-size,需用 <img> 模擬:
<div class="legacy-bg">
<img src="image.jpg" alt="" />
<div class="content">前景內容</div>
</div>
<style>
.legacy-bg {
position: relative;
width: 100%;
height: 300px;
overflow: hidden; /* 防止圖片撐大容器 */
}
.legacy-bg img {
position: absolute;
left: 0; top: 0;
width: 100%;
height: 100%;
object-fit: contain; /* IE8 不支持,但可用 JS 計算縮放 */
z-index: -1; /* 置於內容之下 */
}
.legacy-bg .content {
position: relative;
z-index: 1;
}
</style>
.ie8-bg {
/* 僅 IE8 生效 */
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='image.jpg', sizingMethod='scale');
/* sizingMethod: crop|scale|image
scale = 縮放填滿(會變形),image = 原始大小,crop = 裁剪
無原生 contain 等效模式,需 JS 輔助 */
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.jpg', sizingMethod='scale')";
}
建議:IE8 份額極低,優雅降級(顯示原圖或居中裁剪)優於複雜 Hack。
| 模式 | CSS 值 | 效果 | 適用場景 |
|---|---|---|---|
| 完整顯示 | contain | 圖片完整可見,可能留白 | Logo、插圖、必須全見場景 |
| 填滿覆蓋 | cover | 容器填滿,圖片可能被裁剪 | Banner、Hero 區、裝飾背景 |
| 拉伸填滿 | 100% 100% | 強制填滿,圖片變形 | 純色/漸變/可變形圖案 |
background-size: contain + center + no-repeataspect-ratio 保持比例)