搜索
首页web前端html教程[CSS3] Using CSS’s object-fit and object-position Properties(译)_html/css_WEB-ITnose

原文地址: https://www.sitepoint.com/using-css-object-fit-object-position-properties/

标题:Using CSS’s object-fit and object-position Properties – 使用 CSS 的 object-fit和 object-position属性

视频和图像资源用在网站的时候可能存在定位的问题。

比如说你已经在CSS中明确的指定了图片的宽度。如果宽度是以百分比或者单位比指定的,并且高度是设为自适应 auto,那么调整浏览器窗口的大小会保持图片的宽高比。

但是,有时候你只有有限的空间并且需要给图片的高度设置约束条件。那么改变浏览器的窗口大小肯定会影响图片的宽高比。

和图片尺寸及宽高比相关的很多问题,包括刚才讨论的问题,都可以用 CSS 中的 object-fit和 object-position属性解决。

这些属性和更广为人知的 background-size以及 background-position属性很相似。所以即使你以前从来没听过它们,你在接下来了解它们如何工作的过程中也不会遇到很多问题。

这两个属性都用于替换元素。但是为了简化内容,在这篇文章中我将用图片代替替换元素。

为什么使用 object-fit和 object-position

你可能会疑惑为什么在可以使用 background-size和 background-position的情况下还要要用这两个属性呢?事实上,至少有两个很好的理由。

首先,考虑这样一个场景。你有一个图像资源,而它是文章的一部分。如果像前文的描述那样在 CSS 中设定图片的尺寸,那么重新改变浏览器的窗口大小会导致图片的宽高比混乱。在这样一个情况下,你会倾向于通过 div使用 background-size和 background-position属性,因为简单的 img标签不会起到任何作用。

另一个原因是因为背景属性不能应用于视频元素而 object-fit和 object-position属性可以。因此,需要展示视频元素的时候, object-fit和 object-postion是你唯一的选择。

关于 objcet-fit属性

这个属性决定了像图像和视屏一样的替换内容如何在容器中布局。它有五个可能的值:

  • fill
  • contain
  • cover
  • none
  • scale-down

它们的用法如下:

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

当使用 fill值得时候,图片会完全填充容器。在下面的例子中图片的高度会完全适应盒子的高度。这也是 object-fit的默认值。

See the Pen Object Fit: Fillby SitePoint ( @SitePoint) on CodePen.

contain值通过这样一种方式来调整图片,在使图片适配容器的时候依然保持原来的宽高比。这是为了达到两个目的。它在保持图片不超出容器的同时避免了图像失真。如果图像没有完全填充容器,它会用默认的背景色填充空白部分。

See the Pen Object Fit: Containby SitePoint ( @SitePoint) on CodePen.

当你不知道图片的尺寸但是又希望能把图片装进一个已知宽度的容器的时候,你可以使用 contain值。

如果你希望图片完全填充容器同时保持它的宽高比,你应该使用 cover属性。在下面的例子中,图像会进行缩放从而使得最小的部分会完美贴合容器大小,而溢出容器的部分则会被裁剪。

See the Pen Object Fit: Coverby SitePoint ( @SitePoint) on CodePen.

为了展示图像的原始尺寸并且忽略容器设置好的的尺寸值,你应该使用 none。在下面的例子中图像没有被重新调整大小。但是,如果图像的任何部分超出了容器之外,那些部分会被裁剪掉。

See the Pen Object Fit: Noneby SitePoint ( @SitePoint) on CodePen.

最后的一个 object-fit值是 scale-down。顾名思义,它会缩小图片。这意味着它会根据图像分别被设置为 none或者 contain后,取其中最小的值作为他的调整后尺寸。换句话说,如果在我们的图像中没有尺寸比容器中各自的尺寸要大,那么 none就会生效。

See the Pen Object Fit: scale-downby SitePoint ( @SitePoint) on CodePen.

object-position属性

正如我们前面看到的一样, cover属性会在保持图像原来宽高比的情况下填充容器。而图片也会默认居中显示。在焦点是中心点的情况下这很好理解。但如果焦点并不是中心点呢?

此时 objcet-position属性就可以帮到你。它的工作原理和 background-position一样。下面这段代码就把图像的对齐位置设为左上方。

.zero-zero {  object-position: 0px 0px;} 

你可以通过使用百分比来指定图片的位置而不仅仅是像素。例如, object-position:0% 0%就是左上角而 object-position: 100% 100%就是右下角。使用百分比在你不知道图片的尺寸时很有用。

当图像的宽高比和你的容器很相似的时候,设置 object-position并不会带来什么变化。但是,但宽高比不一样的时候这会带来很好地结果。下面的代码可以证明我的观点。

See the Pen GZewMJby SitePoint ( @SitePoint) on CodePen.

在第二个案例中通过设置 position 为 top-left,使得太阳重新变回焦点。

还有一件事值得一提, object-position属性可以做成动画效果,如果使用得当也能产生让人眼前一亮的效果。下面是一段例子:

img {  /* other CSS here... */  object-fit: cover;  object-position: 0% 0%;  animation: ltr 5s alternateinfinite;}   @keyframes ltr {  0% {    object-position: 0% 0%;  }  25% {    object-position: 20% 0%;  }  100% {    object-position: 100% 100%;  }} 

在这段代码中,我把图像的位置作为关键帧动画,正如你所看,最后的效果看起来也不错。

See the Pen Animating the object-position Propertyby SitePoint ( @SitePoint) on CodePen.

这也可以当成视频效果使用,想象从一个人移动到另一个人的情况。

浏览器支持和 Polyfills

虽然这些属性非常有用,但你能否使用它们还依赖于 浏览器的支持。 object-fit除了 IE/Edge 外被所有主流浏览器支持,而 object-position除了 IE/Edge 和 Safari 外被所有主流浏览器支持。

一般来说,你可能只需要 object-fit属性。如果你愿意牺牲一部分用户的体验你可以使用该属性。如果你需要支持古老的浏览器,你可以使用 Federico Brigante 开发的 polyfill。

结论

我希望你能够希望这个教程以及附带的例子。如果我遗漏了什么或者有你想要补充的,请通过留言让我知道。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
HTML:建立网页的结构HTML:建立网页的结构Apr 14, 2025 am 12:14 AM

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。

从文本到网站:HTML的力量从文本到网站:HTML的力量Apr 13, 2025 am 12:07 AM

HTML是一种用于构建网页的语言,通过标签和属性定义网页结构和内容。1)HTML通过标签组织文档结构,如、。2)浏览器解析HTML构建DOM并渲染网页。3)HTML5的新特性如、、增强了多媒体功能。4)常见错误包括标签未闭合和属性值未加引号。5)优化建议包括使用语义化标签和减少文件大小。

了解HTML,CSS和JavaScript:初学者指南了解HTML,CSS和JavaScript:初学者指南Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的角色:构建Web内容HTML的角色:构建Web内容Apr 11, 2025 am 12:12 AM

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。

HTML和代码:仔细观察术语HTML和代码:仔细观察术语Apr 10, 2025 am 09:28 AM

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代码” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代码”代码“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML,CSS和JavaScript:Web开发人员的基本工具HTML,CSS和JavaScript:Web开发人员的基本工具Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

HTML,CSS和JavaScript的角色:核心职责HTML,CSS和JavaScript的角色:核心职责Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML容易为初学者学习吗?HTML容易为初学者学习吗?Apr 07, 2025 am 12:11 AM

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境