作者: 文章来源:
本文原地址:https://www.mimiwuqi.com/webqianduan/195920.html
在开发时,一直希望有一种原生的 CSS 方式来裁剪图片,并将其定位在我需要的任何方向。这可以通过使用一个额外的 HTML 元素和不同的 CSS 属性来实现,后面解释。
在这篇文章中,将带大家认识新提出的 CSS 属性object-view-box。它允许我们裁剪或调整被替换的 HTML 元素,就像一个 </img> 或 <video>
object-view-box
</img>
<video>
在下面的例子中,我们有一个需要裁剪的图像。请注意,我们只想要该图像的特定部分。
figure { position: relative; width: 300px; aspect-ratio: 1; overflow: hidden; border-radius: 15px; } img { position: absolute; left: -23%; top: 0; right: 0; bottom: 0; width: 180%; height: 100%; object-fit: cover; } 将图像作为背景 在这个解决方案中,我们使用一个 <div> 将图片作为背景,然后我们改变位置和大小值。 <div ></div> .brownies { width: 300px; aspect-ratio: 3 / 2; background-image: url("brownies.jpg"); background-size: 700px auto; background-position: 77% 68%; background-repeat: no-repeat; } 这很好,但如果我们想把上述内容应用于 <img> 呢?嗯,这就是 object-view-box 的作用。 引入 Object-View-Box 属性 object-view-box 可能会在 Chrome 104 中支持。现在可以在 Chrome canary 中使用。 根据CSS 规范。 object-view-box属性在一个元素上指定了一个 “视图框”,类似于<svg viewBox>属性,在元素的内容上进行缩放或平移。 该属性的值是 <basic-shape-rect> = <inset()> | <rect()> | <xywh()>。在本文的演示中,我将着重介绍inset()的用法。 我们回到这个问题上来。 有了 object-view-box,我们就能用 inset 从四边(上、右、下、左)画一个矩形,然后应用object-fit: cover来避免变形。 <img src="img/brownies.jpg" alt=""> img { aspect-ratio: 1; width: 300px; object-view-box: inset(25% 20% 15% 0%); } 这是怎么做到的呢?我们往下看。 图像的内在尺寸 内在大小是默认的图像宽度和高度。我处理的图像大小为 1194 × 1194 px. img { aspect-ratio: 1; width: 300px; } 使用上述 CSS,图片的渲染尺寸将是 300×300px。 想象一下,这对于能够缩放图像是多么有用,而不需要用一个额外的元素来包装它。 结语 期待这个新的属性尽快来了! 更多 建站教程 请访问 https://www.mimiwuqi.com/webqianduan/
figure { position: relative; width: 300px; aspect-ratio: 1; overflow: hidden; border-radius: 15px; } img { position: absolute; left: -23%; top: 0; right: 0; bottom: 0; width: 180%; height: 100%; object-fit: cover; }
在这个解决方案中,我们使用一个 <div> 将图片作为背景,然后我们改变位置和大小值。
<div>
<div ></div>
.brownies { width: 300px; aspect-ratio: 3 / 2; background-image: url("brownies.jpg"); background-size: 700px auto; background-position: 77% 68%; background-repeat: no-repeat; }
这很好,但如果我们想把上述内容应用于 <img> 呢?嗯,这就是 object-view-box 的作用。
<img>
属性 object-view-box 可能会在 Chrome 104 中支持。现在可以在 Chrome canary 中使用。
根据CSS 规范。
object-view-box属性在一个元素上指定了一个 “视图框”,类似于<svg viewBox>属性,在元素的内容上进行缩放或平移。
<svg viewBox>
该属性的值是 <basic-shape-rect> = <inset()> | <rect()> | <xywh()>。在本文的演示中,我将着重介绍inset()的用法。
<basic-shape-rect> = <inset()> | <rect()> | <xywh()>
inset()
我们回到这个问题上来。
有了 object-view-box,我们就能用 inset 从四边(上、右、下、左)画一个矩形,然后应用object-fit: cover来避免变形。
object-fit: cover
<img src="img/brownies.jpg" alt="">
img { aspect-ratio: 1; width: 300px; object-view-box: inset(25% 20% 15% 0%); }
这是怎么做到的呢?我们往下看。
内在大小是默认的图像宽度和高度。我处理的图像大小为 1194 × 1194 px.
1194 × 1194 px
img { aspect-ratio: 1; width: 300px; }
使用上述 CSS,图片的渲染尺寸将是 300×300px。
300×300px
想象一下,这对于能够缩放图像是多么有用,而不需要用一个额外的元素来包装它。
期待这个新的属性尽快来了!
更多 建站教程 请访问 https://www.mimiwuqi.com/webqianduan/