在开发时,一直希望有一种原生的CSS方式来裁剪图片,并将其定位在我需要的任何方向。这可以通过使用一个额外的HTML元素和不同的CSS属性来实现,后面解释。,在这篇文章中,将带领大家了解Jake Archibald在今年年初提出的新的CSS属性object–view–box。它允许我们裁剪或调整被替换的HTML元素,就像一个 </img> 或 <video>。,在下面的例子中,我们有一个需要裁剪的图像。请注意,我们只想要该图像的特定部分。,目前,我们可以通过以下方式之一来解决这个问题。,这是一个常见的解决这个问题的方法,步骤如下:,在这个解决方案中,我们使用一个 <div>
将图片作为背景,然后我们改变位置和大小值。,这很好,但如果我们想把上述内容应用于 <img>
呢?嗯,这就是 object-view-box
的作用。,属性 object-view-box 可能会在 Chrome 104 中支持。现在可以在 Chrome canary中使用。,根据CSS规范。,该属性的值是 <basic-shape-rect> = <inset()> | <rect()> | <xywh()>。在本文的演示中,我将着重介绍inset()的用法。,我们回到这个问题上来。,有了 object-view-box,我们就能用inset从四边(上、右、下、左)画一个矩形,然后应用object-fit: cover来避免变形。,这是怎么做到的呢?我们往下看。,内在大小是默认的图像宽度和高度。我处理的图像大小为 1194 × 1194 px
.,使用上述CSS,图片的渲染尺寸将是 300×300px
。,我们的目标是在固有图像上画一个矩形。要做到这一点,我们使用 inset()
值。,inset()值将基于原始图像的宽度和高度,从而形成一个裁剪过的图像。它将帮助我们绘制一个嵌入的矩形并控制四个边缘,类似于处理margin或padding。,inset 值定义了一个嵌入的矩形。我们可以控制四个边缘,就像我们处理margin或padding一样。在下面的例子中,卡片的所有边缘都有一个20px的嵌入。,回到 object-view-box:,以下是上述内容的背后的样子,值 25%、20%、15%
和0%
的值分别代表顶部、右侧、底部和左侧。,如果图像的尺寸是正方形的,那么裁剪后的结果将是变形的。,这可以使用 object-fit 属性来解决。,我们可以使用 inset 来放大或缩小图像。根据我的测试,过渡或动画不能与object-view-box工作。,我们也可以用一个负的 inset
值来缩小,想象一下,这对于能够缩放图像是多么有用,而不需要用一个额外的元素来包装它。,地址:https://codepen.io/shadeed/pen/yLvXJRd。,期待这个新的属性尽快到来!
© 版权声明
文章版权归作者所有,未经允许请勿转载。