小码哥的IT人生

CSS object-fit 属性 详解

css3基础 2022-05-23 12:08:02小码哥的IT人生shichen

CSS object-fit 属性

CSS object-fit 属性用于规定应如何调整 <img> 或 <video> 的大小来适应其容器。

浏览器支持

表格中的数字注明了完全支持该属性的首个浏览器版本。

属性 Chrome IE Firefox Safari Opera
object-fit 31.0 16.0 36.0 7.1 19.0

CSS object-fit 属性

CSS object-fit 属性用于指定应如何调整 <img> 或 <video> 的大小以适合其容器。

这个属性告诉内容以不同的方式填充容器。比如“保留长宽比”或者“展开并占用尽可能多的空间”。

请看下面来自上海鲜花港的郁金香图片,它是 300x300 像素:

Tulip

但是,如果我们把上面的图像设置为 200x300 像素,则它会看起来像这样:

Tulip

示例代码:

img {
  width: 200px;
  height: 300px;
}

 

完整实例【亲自试一试】:

<!DOCTYPE html>
<html>
<head>
<style>
img {
  width:200px;
  height:400px;
}
</style>
</head>
<body>
<h1>Image</h1>
<img src="/i/photo/tulip.jpg" alt="Tulip" width="400" height="300">
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

我们看到图像被压缩以适合 200x300 像素的容器,并且原始宽高比被破坏了。

如果我们使用 object-fit: cover;,它会剪切图像的侧面,保留长宽比,并填充空间,如下所示:

Coffee

示例代码:

img {
  width: 200px;
  height: 400px;
  object-fit: cover;
}

 

完整实例【亲自试一试】:

<!DOCTYPE html>
<html>
<head>
<style>
img {
  width:200px;
  height:400px;
  object-fit:cover;
}
</style>
</head>
<body>
<h1>object-fit 属性</h1>
<img src="/i/photo/tulip.jpg" alt="Tulip" width="300" height="300">
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

另一个实例

在这里,我们有两幅图像,我们希望它们填充浏览器窗口的 50% 的宽度和 100% 的高度。

在下面的例子中,我们不使用 object-fit,因此,当我们调整浏览器窗口的大小时,图像的长宽比将被破坏:

示例代码:

 

完整实例【亲自试一试】:

<!DOCTYPE html>
<html>
<body>
<h1>未使用 object-fit</h1>
<p>在这里,我们没有使用 "object-fit",因此如果我们调整浏览器窗口的大小,会破坏图像的长宽比:</p>
<div style="width:100%;height:400px;">
  <img src="/i/photo/tiyugongyuan.jpg" alt="Shanghai" style="float:left;width:50%;height:100%;">
  <img src="/i/photo/tulip.jpg" alt="Tulip" style="float:left;width:50%;height:100%;">
</div>
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

在下一个例子中,我们使用 object-fit: cover;,因此,当我们调整浏览器窗口的大小时,将保留图像的长宽比:

示例代码:

 

完整实例【亲自试一试】:

<!DOCTYPE html>
<html>
<body>
<h1>使用 object-fit</h1>
<p>此处我们用了 "object-fit: cover;",因此如果我们调整浏览器窗口大小,图像的高宽比会被保留:</p>
<div style="width:100%;height:400px;">
  <img src="/i/photo/tiyugongyuan.jpg" alt="Shanghai" style="float:left;width:50%;height:100%;object-fit:cover;">
  <img src="/i/photo/tulip.jpg" alt="Tulip" style="float:left;width:50%;height:100%;object-fit:cover;">
</div>
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

CSS object-fit 属性的所有值

object-fit 属性可接受如下值:

  1. fill - 默认值。调整替换后的内容大小,以填充元素的内容框。如有必要,将拉伸或挤压物体以适应该对象。
  2. contain - 缩放替换后的内容以保持其纵横比,同时将其放入元素的内容框。
  3. cover - 调整替换内容的大小,以在填充元素的整个内容框时保持其长宽比。该对象将被裁剪以适应。
  4. none - 不对替换的内容调整大小。
  5. scale-down - 调整内容大小就像没有指定内容或包含内容一样(将导致较小的具体对象尺寸)

下面的例子演示了 object-fit 属性的所有可能值:

示例代码:

fill {object-fit: fill;}
contain {object-fit: contain;}
cover {object-fit: cover;}
scale-down {object-fit: scale-down;}
none {object-fit: none;}

 

完整实例【亲自试一试】:

<!DOCTYPE html>
<html>
<head>
<style>
.fill {object-fit: fill;}
.contain {object-fit: contain;}
.cover {object-fit: cover;}
.scale-down {object-fit: scale-down;}
.none {object-fit: none;}
</style>
</head>
<body>
<h1>object-fit 属性</h1>
<h2>No object-fit:</h2>
<img src="/i/photo/tulip.jpg" alt="Tulip" style="width:200px;height:400px">
<h2>object-fit: fill (this is default):</h2>
<img class="fill" src="/i/photo/tulip.jpg" alt="Tulip" style="width:200px;height:400px">
<h2>object-fit: contain:</h2>
<img class="contain" src="/i/photo/tulip.jpg" alt="Tulip" style="width:200px;height:400px">
<h2>object-fit: cover:</h2>
<img class="cover" src="/i/photo/tulip.jpg" alt="Tulip" style="width:200px;height:400px">
<h2>object-fit: scale-down:</h2>
<img class="scale-down" src="/i/photo/tulip.jpg" alt="Tulip" style="width:200px;height:400px">
<h2>object-fit: none:</h2>
<img class="none" src="/i/photo/tulip.jpg" alt="Tulip" style="width:200px;height:400px">
</body>
</html>

可以使用本站在线JavaScript测试工具测试上述代码运行效果:http://www.phpcodeweb.com/runjs.html

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024