温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CSS3中的新属性object-view-box怎么使用

发布时间:2022-06-13 10:34:06 来源:亿速云 阅读:187 作者:zzz 栏目:web开发

这篇文章主要讲解了“CSS3中的新属性object-view-box怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS3中的新属性object-view-box怎么使用”吧!

CSS3中的新属性object-view-box怎么使用

问题

在下面的例子中,我们有一个需要裁剪的图像。请注意,我们只想要该图像的特定部分。

CSS3中的新属性object-view-box怎么使用

目前,我们可以通过以下方式之一来解决这个问题。

  • 使用 <img> 并将其包裹在一个额外的元素中

  • 使用图像作为 background-image 并修改位置和大小

包在一个额外的元素中

这是一个常见的解决这个问题的方法,步骤如下:

  • 将图像包裹在另一个元素中(在我们的例子中是 <figure>)。

  • 添加 position: relativeoverflow: hidden

  • 为图片添加了 position: absolute,并对定位和尺寸值进行了调整,以实现这一结果。

<figure>
    <img src="img/brownies.jpg" alt="">
</figure>
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 class="brownies"></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规范(https://drafts.csswg.org/css-images-4/#the-object-view-box)

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

CSS3中的新属性object-view-box怎么使用

我们的目标是在固有图像上画一个矩形。要做到这一点,我们使用 inset()值。

使用 inset

inset()值将基于原始图像的宽度和高度,从而形成一个裁剪过的图像。它将帮助我们绘制一个嵌入的矩形并控制四个边缘,类似于处理marginpadding

inset 值定义了一个嵌入的矩形。我们可以控制四个边缘,就像我们处理marginpadding一样。在下面的例子中,卡片的所有边缘都有一个20px的嵌入。

CSS3中的新属性object-view-box怎么使用

回到 object-view-box:

img {
    aspect-ratio: 1;
    width: 300px;
    object-view-box: inset(25% 20% 15% 0%);
}

以下是上述内容的背后的样子,值 25%、20%、15%0% 的值分别代表顶部、右侧、底部和左侧。

CSS3中的新属性object-view-box怎么使用

修复图像失真

如果图像的尺寸是正方形的,那么裁剪后的结果将是变形的。

CSS3中的新属性object-view-box怎么使用

这可以使用 object-fit 属性来解决。

img {
    aspect-ratio: 1;
    width: 300px;
    object-view-box: inset(25% 20% 15% 0%);
    object-fit: cover;
}

CSS3中的新属性object-view-box怎么使用

放大或缩小

我们可以使用 inset 来放大或缩小图像。根据我的测试,过渡或动画不能与object-view-box工作。

CSS3中的新属性object-view-box怎么使用

我们也可以用一个负的 inset 值来缩小。

CSS3中的新属性object-view-box怎么使用

想象一下,这对于能够缩放图像是多么有用,而不需要用一个额外的元素来包装它。

感谢各位的阅读,以上就是“CSS3中的新属性object-view-box怎么使用”的内容了,经过本文的学习后,相信大家对CSS3中的新属性object-view-box怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI