首页 > 其他分享 >CSS object-fit

CSS object-fit

时间:2023-12-22 17:22:48浏览次数:27  
标签:长宽 fit object cover 图像 position CSS

一、object-fit

object-fit属性定义了被替换的元素(如imgvideo)的内容应如何调整大小以适应其容器。object-fit的默认值是fill,这可能导致图像被挤压或拉伸。

让我们来看看可能的值。

object-fit的可能值:contain、cover、fill、none

1、object-fit: contain

在这种情况下,图像的大小将被调整以适应其容器的长宽比。如果图像的长宽比与容器的长宽比不一致,它就会被“黑边化”。(即图像的长宽比不变)

当使用object-fit: contain时,图像将被黑边化或相应调整大小。

2、object-fit: cover

这里,图像也将被调整大小以适应其容器的长宽比,如果图像的长宽比与容器的长宽比不一致,那么它将被剪切以适应。

当使用object-fit: cover时,图像将被剪裁以适应或相应地调整大小。

3、object-fit: fill

使用这个,图像将被调整大小以适应其容器的长宽比,如果图像的长宽比与容器的长宽比不一致,它将被挤压或拉伸。我们不希望这样。

当使用object-fit: fill时,图像将被相应地挤压、拉伸或调整大小。

4、object-fit: none

在这种情况下,图像根本不会被调整大小,既不会被拉伸也不会被挤压。它的作用与cover类似,但它不依赖于其容器的长宽比。

当使用object-fit: none时,如果图像的尺寸不一样,它就不会被调整大小。

除了object-fit,我们还有object-position属性,它负责在其容器中定位图像。

object-position 的可能值

object-position属性的作用类似于CSS的background-position属性。

大多数情况下,使用默认值(例如,"center "或 "50% 50%")。

当容器的长宽比在垂直方向上较大时,topbottom关键字也会起作用。

比较object-position: top(left)和object-position: bottom(right)。

二、使用案例

1、用户头像

object-fit: cover的一个完美的用例:封面是用户的头像。一个头像所允许的长宽比通常是方形的。将图像放在一个方形的容器中可能会使图像变形。

一个没有object-fit的用户头像和有object-fit: cover的用户头像。

.c-avatar {
    object-fit: cover;
}

2、LOGO 列表

列出一个企业的客户是很重要的。我们经常会使用logo来达到这个目的。因为logo会有不同的大小,我们需要一种方法来调整它们的大小而不使它们变形。

幸好,object-fit: contain是一个很好的解决方案。

.logo__img {
    width: 150px;
    height: 80px;
    object-fit: contain;
}

使用object-fit: contain可以帮助我们调整客户的logo大小,而不会扭曲它们。

3、文章缩略图

这是一个非常常见的用例。文章缩略图的容器可能并不总是有一个具有相同长宽比的图像。这个问题首先应该由内容管理系统(CMS)来解决,但它并不总是如此。

.article__thumb {
    object-fit: cover;
}

object-fit: cover的帮助下,调整文章缩略图。

4、文本+背景图

在这个用例中,决定是使用img元素还是CSSbackground,将取决于以下几点。

  • 图像是否重要?如果CSS因为某种原因被禁用,我们是否希望用户看到这个图像?
  • 或者图像的目的只是装饰性的?

根据我们的回答,我们可以决定使用哪种功能。如果图像是重要的:

让我们假设图像很重要,因为这是一个与食物有关的网站。

<section class="hero">
    <img class="hero__thumb" src="thumb.jpg" alt="" />
</section>
Copy
.hero {
    position: relative;
}
​
.hero__thumb {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;    
}

如果图像是装饰性的,我们可以用background-image

.hero {
    position: relative;
    background-image: linear-gradient(to top, #a34242, rgba(0,0,0,0), url("thumb.jpg");
    background-repeat: no-repeat;
    background-size: cover;
}

在这种情况下,CSS比较短。确保放在图片上的任何文字都是可读的,并且是可访问的。

5、用object-fit: contain 给图片添加背景

你知道你可以为img添加背景色吗?当我们使用object-fit: contain时,我们会从中受益。

在下面的例子中,我们有一个图片的矩阵。当图像和容器的长宽比不同时,背景色就会出现。

img {
    object-fit: contain;
    background-color: #def4fd;
}

我们可以使用object-fit: contain来给图像添加背景色。

6、<video>元素

你是否曾经需要一个video作为背景?如果是这样,那么你可能希望它占据其父本的全部宽度和高度。

.hero {
    position: relative;
    background-color: #def4fd;
}
​
.hero__video {
    position: aboslute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

video元素的object-fit默认值是contain。正如你在这里看到的,视频并没有覆盖文本&背景图,尽管它的属性是:position: absolute, width: 100%, and height: 100%

为了使它完全覆盖其父体的宽度和高度,我们需要覆盖默认的object-fit值。

.hero__video {
    /* other styles */
    object-fit: cover;
}

现在,视频覆盖了其父体的全部宽度和高度。

标签:长宽,fit,object,cover,图像,position,CSS
From: https://www.cnblogs.com/zwh0910/p/17921998.html

相关文章

  • 常用xpath选择器和css选择器总结
    xpath选择器表达式说明article选取所有article元素的所有子节点/article选取根元素articlearticle/a选取所有属于article的子元素的a元素//div选取所有div子元素(不论出现在文档任何地方)article//div选取所有属于article元素的后代的div元素,不管它出现在ar......
  • Kotlin内部实现-01-companion_object
    Kotlin内部实现_01_companionobject1.companionobject概述在Kotlin中,companionobject是一种特殊的对象声明,它用于在类内部创建静态成员。这是Kotlin对Java中静态成员的一种替代方案,因为Kotlin自身不直接支持传统意义上的静态方法或属性。主要用途和特点包括:静......
  • 03--css重点回顾
    CSS层叠样式表一css简介什么是css?层叠样式表命名规则:使用字母、数字或下划线和减号构成,不要以数字开头格式:选择器{属性:值;属性:值;属性:值;....}其中选择器也叫选择符CSS中注释/*...*/二如何使用css样式即html中嵌入css的方式1.内联方式(行内样式......
  • CSS设置一个梯形
    1、图形2、代码<!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title><style> .d{ width:0px; height:100px; border-left:25pxsolid; border-top:25pxsolidtransparent; border-bottom:2......
  • css中的::after和::before
    先来看一个::before和::after的例子,给一个元素的前后再不添加新的元素的时候增加内容:<viewclass="info-before">测试before和after</view>.info-before{font-weight:bold;margin:30px;}.info-before::before{content:"添加在::before";......
  • 使用css绘制箭头
    使用css也能直接写出箭头符号,这样不用都使用图片能减少打包的大小。下面是一些常用箭头的css写法://向上的箭头<viewclass="button-up"></view>//css的内容.button-up{position:relative;padding:5px;margin:10pxauto;background:#000;......
  • 使用js和css实现选项卡切换
    HTML<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><linkrel="stylesheet"hre......
  • css中的定位方式
    css中默认的定位方式为static,如果不是static了,那么就说明这个元素被定位了,定位方式有很多种,简单介绍一下相对定位相对于自己原来的位置进行比较,仍然占据文档流的位置.parent{position:relative;}.child{position:relative;/*默认是static,将其改为relative*/to......
  • 纯css展示loading加载动画
    https://uiverse.io/barisdogansutcu/light-rat-32<svgviewBox="25255050"><circler="20"cy="50"cx="50"></circle></svg>svg{width:3.25em;transform-origin:center;animation:rot......
  • 记录一次openpyx使用rich_text报错AttributeError: 'TextBlock' object has no attrib
    先说解决办法:pipinstalllxml报错截图:当时在两个环境中分别使用相同版本openpyxl,相同的代码,一个环境中能成功,另外一个一直报错。排查结果如下:根据报错找到文件:File"\openpyxl\worksheet_writer.py",line147,inwrite_row在155行到158行看到如下代码:ifLXML:......