为什么 background-size: contain 在这种情况下不起作用?
Why doesnt background-size: contain work in this case?
我不明白为什么在这种特定情况下,属性 background-size: contain 不起作用。在这种情况下 changing background-size: contain for background-size: cover 确实有效!为什么?
这是我的代码笔:
https://codepen.io/JMainol/pen/eYpbQyg
html
<body>
</body>
css
body{
margin: 0;
padding: 0;
background: url(https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ);
background-repeat: no-repeat;
background-size: contain;
}
很好的问题。 contain 属性仅在存在与图像具有相对定义比例的区域时使用。包含属性在不裁剪或拉伸图像的情况下尽可能大地缩放图像。
虽然当图像可以拉伸到任意比例时使用 cover 属性,因此 html body 标签具有无限比例(高度和宽度),但它确实可以变化很多。如果图像的比例与元素的比例不同,则将其垂直或水平切割,以免出现空白 space.
为了说明我的解释,我在您提供的 css 中又添加了 2 行。
body{
width: 1920px;
height: 1080px;
background: url('https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ') no-repeat center;
background-size: contain;
}
添加高宽比例后,图片大小根据"Contain"属性调整。但是当没有高度和宽度时,Contain属性没有任何作用。
您的 body 没有内容,因此不会应用背景图片,因为您的 body 的高度为 0:
body{
margin: 0;
padding: 0;
min-height: 100vh;
background: url(https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ);
background-repeat: no-repeat;
background-size: contain;
}
<body></body>
或者您甚至可以调整填充:
body{
margin: 0;
padding: 1rem;
background: url(https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ);
background-repeat: no-repeat;
background-size: contain;
}
<body></body>
我不明白为什么在这种特定情况下,属性 background-size: contain 不起作用。在这种情况下 changing background-size: contain for background-size: cover 确实有效!为什么?
这是我的代码笔: https://codepen.io/JMainol/pen/eYpbQyg
html
<body>
</body>
css
body{
margin: 0;
padding: 0;
background: url(https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ);
background-repeat: no-repeat;
background-size: contain;
}
很好的问题。 contain 属性仅在存在与图像具有相对定义比例的区域时使用。包含属性在不裁剪或拉伸图像的情况下尽可能大地缩放图像。
虽然当图像可以拉伸到任意比例时使用 cover 属性,因此 html body 标签具有无限比例(高度和宽度),但它确实可以变化很多。如果图像的比例与元素的比例不同,则将其垂直或水平切割,以免出现空白 space.
为了说明我的解释,我在您提供的 css 中又添加了 2 行。
body{
width: 1920px;
height: 1080px;
background: url('https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ') no-repeat center;
background-size: contain;
}
添加高宽比例后,图片大小根据"Contain"属性调整。但是当没有高度和宽度时,Contain属性没有任何作用。
您的 body 没有内容,因此不会应用背景图片,因为您的 body 的高度为 0:
body{
margin: 0;
padding: 0;
min-height: 100vh;
background: url(https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ);
background-repeat: no-repeat;
background-size: contain;
}
<body></body>
或者您甚至可以调整填充:
body{
margin: 0;
padding: 1rem;
background: url(https://lh3.googleusercontent.com/proxy/-6w3o1Xo04RZwWw86XzQ7TakArUKvRGUF0l-2o25my6y8W47rSTqjOyfVYEg8qZPgkzbQAEoBZQfyiQ-0Hpm72MIRTeCjeUhxtBKt1fenboarbMxo3TrU5cBdbRfvav1377ZearzLWB2ds6_uT_KJs2lKPYo3GxSkYj84XqG5c6JK_2-6MDiSOC8i6KecAopJQ);
background-repeat: no-repeat;
background-size: contain;
}
<body></body>