목차
为什么使用 object-fit和 object-position
关于 objcet-fit属性
object-position属性
浏览器支持和 Polyfills
结论
웹 프론트엔드 HTML 튜토리얼 [CSS3] Using CSS’s object-fit and object-position Properties(译)_html/css_WEB-ITnose

[CSS3] Using CSS’s object-fit and object-position Properties(译)_html/css_WEB-ITnose

Jun 21, 2016 am 08:47 AM

原文地址: 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

& lt; Progress & Gt의 목적은 무엇입니까? 요소? & lt; Progress & Gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:34 PM

이 기사는 HTML & lt; Progress & Gt에 대해 설명합니다. 요소, 그 목적, 스타일 및 & lt; meter & gt의 차이; 요소. 주요 초점은 & lt; progress & gt; 작업 완료 및 & lt; meter & gt; Stati의 경우

& lt; datalist & gt의 목적은 무엇입니까? 요소? & lt; datalist & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:33 PM

이 기사는 HTML & LT; Datalist & GT에 대해 논의합니다. 자동 완성 제안을 제공하고, 사용자 경험을 향상시키고, 오류를 줄임으로써 양식을 향상시키는 요소. 문자 수 : 159

HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? HTML5의 크로스 브라우저 호환성에 대한 모범 사례는 무엇입니까? Mar 17, 2025 pm 12:20 PM

기사는 HTML5 크로스 브라우저 호환성을 보장하기위한 모범 사례에 대해 논의하고 기능 감지, 점진적 향상 및 테스트 방법에 중점을 둡니다.

& lt; meter & gt의 목적은 무엇입니까? 요소? & lt; meter & gt의 목적은 무엇입니까? 요소? Mar 21, 2025 pm 12:35 PM

이 기사는 HTML & lt; meter & gt에 대해 설명합니다. 범위 내에 스칼라 또는 분수 값을 표시하는 데 사용되는 요소 및 웹 개발의 일반적인 응용 프로그램. & lt; meter & gt; & lt; Progress & Gt; 그리고 Ex

html5 & lt; time & gt; 의미 적으로 날짜와 시간을 나타내는 요소? html5 & lt; time & gt; 의미 적으로 날짜와 시간을 나타내는 요소? Mar 12, 2025 pm 04:05 PM

이 기사는 html5 & lt; time & gt; 시맨틱 날짜/시간 표현 요소. 인간이 읽을 수있는 텍스트와 함께 기계 가독성 (ISO 8601 형식)에 대한 DateTime 속성의 중요성을 강조하여 Accessibilit를 향상시킵니다.

HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? HTML5 양식 유효성 검사 속성을 사용하여 사용자 입력을 유효성있게하려면 어떻게합니까? Mar 17, 2025 pm 12:27 PM

이 기사에서는 브라우저에서 직접 사용자 입력을 검증하기 위해 필요한, Pattern, Min, Max 및 Length 한계와 같은 HTML5 양식 검증 속성을 사용하는 것에 대해 설명합니다.

뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? 뷰포트 메타 태그는 무엇입니까? 반응 형 디자인에 중요한 이유는 무엇입니까? Mar 20, 2025 pm 05:56 PM

이 기사는 모바일 장치의 반응 형 웹 디자인에 필수적인 Viewport Meta Tag에 대해 설명합니다. 적절한 사용이 최적의 컨텐츠 스케일링 및 사용자 상호 작용을 보장하는 방법을 설명하는 반면, 오용은 설계 및 접근성 문제로 이어질 수 있습니다.

& lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? & lt; iframe & gt; 꼬리표? 보안을 사용할 때 보안 고려 사항은 무엇입니까? Mar 20, 2025 pm 06:05 PM

이 기사는 & lt; iframe & gt; 외부 컨텐츠를 웹 페이지, 공통 용도, 보안 위험 및 객체 태그 및 API와 같은 대안을 포함시키는 태그의 목적.

See all articles