一文了解CSS3中的新属性object-view-box

原创
ithorizon 6个月前 (10-19) 阅读数 49 #CSS

本篇文章带大家一起深入了解一下css3中的新特性object-view-box属性,聊聊新属性的作用和使用方法,希望对大家有所帮助!

在开发时,一直希望有一种原生的CSS方式来裁剪图片,并将其定位在我需要的任何方向。这可以通过使用一个额外的HTML元素和不同的CSS属性来实现,后面解释。

在这篇文章中,将带领大家了解Jake Archibald在今年年初提出的新的CSS属性object-view-box。它允许我们裁剪或调整被替换的HTML元素,就像一个 或

问题

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

立即学习“前端免费学习笔记(深入)”;

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

  • 使用 并将其包裹在一个额外的元素中
  • 使用图像作为 background-image 并修改位置和大小

包在一个额外的元素中

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

  • 将图像包裹在另一个元素中(在我们的例子中是
    )。
  • 添加 position: relative 和 overflow: hidden
  • 为图片添加了 position: absolute,并对定位和尺寸值进行了调整,以实现这一结果。
<figure>
    @@##@@
</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 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;
}

这很好,但如果我们想把上述内容应用于 呢?嗯,这就是 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属性在一个元素上指定了一个 "视图框",类似于属性,在元素的内容上进行缩放或平移。

该属性的值是 = | | 。在本文的演示中,我将着重介绍inset()的用法。

我们回到这个问题上来。

有了 object-view-box,我们就能用inset从四边(上、右、下、左)画一个矩形,然后应用object-fit: cover来避免变形。

@@##@@
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。

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

使用 inset

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

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

回到 object-view-box:

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

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

修复图像失真

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

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

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

放大或缩小

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

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

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

事例

地址:https://codepen.io/shadeed/pen/yLvXJRd

期待这个新的属于尽快来了!

作者:ishadeed 

来源:ishadeed

原文:https://ishadeed.com/article/css-object-view-box/

(学习视频分享:web前端)

以上就是一文了解CSS3中的新属性object-view-box的详细内容,更多请关注IT视界其它相关文章!

最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载 相关标签: css css chrome css3 html Object position overflow margin padding background https 来源:segmentfault网 收藏 点赞 上一篇:原来利用纯CSS也能实现文字轮播与图片轮播! 下一篇:CSS变量是怎么工作的?如何使用内联CSS变量进行布局? 本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn 作者最新文章
  • POPO是什么? 2024-06-08 22:20:24
  • 谷歌三件套指的是哪三个软件 2024-06-08 20:01:09
  • 什么是web3?大白话解析web3形态 2024-01-18 14:52:42
  • vpc网络是什么意思 2023-10-08 17:47:13
  • gmail是什么邮箱 2023-10-08 17:42:34
  • 网络攻击的种类有哪些? 2023-10-08 17:22:59
  • 云什么意思? 2023-10-08 17:16:01
  • 支付通是什么平台 2023-09-12 14:49:39
  • HMS Core是什么软件 2023-08-17 11:25:41
  • Word文本框没有旋转按钮怎么办 2023-06-16 17:27:27
最新问题 用了gard("admin")还需要单独验证吗? 在控制器中用了gard("admin")->attempt($rules)后还需要单独写查询语句验证吗? P粉709840553来自于2024-09-24 11:07:51 0 0 446 为什么password密码在数据据值都不样 自动生成后在数据库password这个字段中为什么会出现值不一样,生成都是用的是:admin888 P粉709840553来自于2024-09-24 11:06:02 0 0 372 运行视频看不了啊 运行视频看不了啊 P粉109248948来自于2024-09-24 10:21:09 0 0 281 为啥开头不写结束符号 ?> 就写一个<?php 为啥开头不写结束符号   ?>   就写一个<?php P粉052048067来自于2024-09-11 18:01:19 0 1 700 按照老师的方法不传值给TP6后台,再接收参数。出现以下错误。怎么办 http://localhost/index.php/admin/index/userliste 的远程资源。(原因:CORS 头缺少 'Access-Control-Al... 凡人来自于2024-07-09 15:20:49 1 39 2107 请问写php项目都要用到git吗 请问写php项目都要用到git吗 IT视界用户-4202961来自于2024-06-11 14:28:59 0 57 2712 请问能提供下源码么 请问能提供下源码么?想对照着看 周珂儿来自于2024-06-06 08:56:32 0 47 2427 为什么我用的laravel10不走handle文件中的render方法,无法输出断点内容 为什么我用的laravel10不走handle文件中的render方法,无法输出断点内容 许飞来自于2024-06-02 14:41:32 0 50 1877 小鱼AI助手免费使用!http://ai.52xuejs.cn/#/chat 小鱼AI助手免费使用!http://ai.52xuejs.cn/#/chat 会飞的汤姆来自于2024-05-28 03:09:58 0 47 2473 function_exists()无法判定自定义函数 function test()    {        return true;    } ... 凡人来自于2024-04-29 11:01:01 0 64 3304 相关专题 更多>
  • css
  • css居中
  • css如何插入图片
  • css超出显示...
  • css字体颜色
  • 什么是css
  • css三角形怎么写
  • css设置文字颜色


热门