知道有这个属性存在,是一个很偶然的机会。有一天,设计部的一个小伙伴给了我一个网址,说很有个性,让我看一下,当发现一个很有意思的效果时,作为一个前端小兵的我当然是第一时间开始审查元素,然后看到了这个从没听说过的属性 object-fit 。

object-fit是什么属性?

MDN上的解释是:

The object-fit CSS property specifies how the contents of a replaced element      should  be fitted to the box established by its used height and width.

其实我是没看太明白,所以呢,只能求助大神的博客了,以下内容是对他们的博客内容的参考,借此加深自己对这个属性的理解。深入学习了解请点击-->半深入理解CSS3 object-position/object-fit

属性中的object指的是replaced element(替换元素)。

什么是替换元素? (详情-->这里

其内容不受CSS视觉格式化模型控制的元素,例如image,嵌入的文档(iframe之类)或者applet。img元素的内容通常会被其src属性指定的图像替换掉。替换元素通常有其固有的尺寸:一个固有的宽度,一个固有的高度和一个固有的比率。css模型渲染模型不考虑替换元素内容的渲染,这些替换元素独立展现于CSS。object,video,textarea,input也是替换元素,audio和canvas在某些特定情形下为替换元素。使用css的content属性插入的对象是匿名替换元素。

object-fit属性只针对替换元素有作用,也就是form表单控件,img,video标签。

object-fit属性可以有五种取值。 fill | contain | cover | none | scale-down

1.fill-->替换内容填满整个content-box,不保持原有比例。

2.contain-->操持原尺寸比例。保证替换内容尺寸一定可以在容器中放得下。但可能回留出空白。

3.cover--> 保持原有尺寸比例,保证替换内容尺寸一定大于容器的大小,宽度和高度至少有一个和容器一致。但可能会使替换内容部分区域不可见。

4.none--> 保持原有尺寸比例。同时保持替换内容原始尺寸大小。

5.scale-down-->类似依次设置none或contain,最终呈现的是尺寸较小的那个。

概念理解:

img是个替换元素,如果没有src属性,依然是个替换元素,在浏览器中的解析依然是正确的,图片的src属性指向的图片属于替换内容,替换内容和替换元素是盒子与内容的关系,二者是独立的。在CSS3时代,object-fit控制的永远是替换内容的尺寸表现。不是替换元素img。我们对img设置宽和高为100%时,实际上控制的是img这个元素,这个盒子的尺寸是100%撑满容器。

注意:IE浏览器不支持object-fit属性。

项目中使用:在做一个需要响应式网站的时候,在移动端banner图显需要只显示大图的中心部分,其他部分隐藏。使用obeject-dit属性完美解决这个问题。

object-fit?的更多相关文章

  1. Java类是如何默认继承Object的?

    原:https://juejin.im/post/5ca1e8ade51d454e6a300048 前言 学过Java的人都知道,Object是所有类的父类.但是你有没有这样的疑问,我并没有写exte ...

  2. [你必须知道的.NET]第二十七回:interface到底继承于object吗?

    发布日期:2009.03.05 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 在.NET世界里,我们常常听到的一句话莫过于“S ...

  3. Java泛型Object和?区别

    在写spark streamming读取kafka latest offset的时候,有一下语句: Map<TopicAndPartition, Object> latestOffsets ...

  4. Python 为什么要继承 object 类?

    自己搬运自己在知乎上的回答,感觉破乎吃枣药丸,哪天挂了这里就是个备份. 链接:https://www.zhihu.com/question/19754936/answer/229327803 2017 ...

  5. vue android低版本 白屏问题 你是不是用了Object.assign ??

    问题描述 在部分比较低版本的手机中,发现apk安装后白屏,但是大部分手机都能安装. 本人在使用android4.4时候,也是安装后打开白屏. 原因: 代码写法不兼容 this.user = Objec ...

  6. Python2.7版本:定义类时为什么要继承object类?

    ********此答案摘自知乎,且经过自己实际运行后得出******** 继承 object 类的是新式类,不继承 object 类的是经典类 例子: 新式类: 经典类: B.C 是 A 的子类,D ...

  7. Vue 的响应式原理中 Object.defineProperty 有什么缺陷?为什么在 Vue3.0 采用了 Proxy,抛弃了 Object.defineProperty?

    Object.defineProperty无法监控到数组下标的变化,导致通过数组下标添加元素,不能实时响应: Object.defineProperty只能劫持对象的属性,从而需要对每个对象,每个属性 ...

  8. 你真的知道typeof null的结果为什么是‘object‘吗?

    到目前为止,ECMAScript 标准中定义了8种数据类型,它们分别是Undefined.Null.Number.Boolean.String.Symbol.BigInt.Object. 为了判断变量 ...

  9. SW加载标准库时出现failed to create Toolboxlibrary object怎么办?

    友情提示:Windows+r打开  输入smd 注意操作前要关闭solidworks, 重新打开软件. 下面就可以找到很多标准件了.

  10. 为什么说对象字面量赋值比new Object()高效?

    http://www.cnblogs.com/mushishi/p/5811743.html

随机推荐

  1. Grunt打包之seajs项目【转】

    原文:http://www.cnblogs.com/accordion/p/4508154.html grunt与seajs grunt是前端流行的自定义任务的脚手架工具,我们可以使用grunt来为我 ...

  2. javascript循环---性能优化

    循环是编程中是最为常见的结构,优化循环是性能优化中很重要的一个部分. 减值迭代:大多数循环使用一个从0开始.增加到某个特定值的迭代器.在很多情况下,从最大值开始,在循环中不断减值的迭代器更加高效. 简 ...

  3. linux-touch

    linux-touch 用于创建文件或者更新文件的修改日期 命令参数 - d yyyymmdd:把文件的存取或修改时间改为  yyyy年mm月dd日 - a :只把文件的存取时间改成当前时间 - m: ...

  4. JS中的this的应用总结

    简述this的用法 "this是由被调用的方式确定"这个事实,使得this可以被改变,从而为函数增加了动态性,可变性,使得变成更加灵活.目前因为工作经验有限,暂时总结一下五种情况下 ...

  5. CentOS配置上网

    CentOS设置:   进入CentOS命令模式: Centos7更改默认启动桌面(或命令行)模式 vi /etc/inittab:查看启动文件,在该文件中存在两种方式: multi-user.tar ...

  6. mac环境下支持PHP调试工具xdebug,不需要建项目server

    先让php支持xdebug 方式一: https://xdebug.org/download.php 下载相应的xdebug  可以到http://xdebug.org/wizard.php 把php ...

  7. python的Windows下的安装

    1.先打开网址http://www.python.org/download/: 2.在下载列表中选择Window平台安装包, 找到最后 web-based installer 是需要通过联网完成安装的 ...

  8. javascript函数式编程(一)

    一.引言 javascript函数式编程在最近两年来频繁的出现在大众的视野,越来越多的框架(react,angular,vue等)标榜自己使用了函数式编程的特性,好像一旦跟函数式编程沾边,就很高大上一 ...

  9. Celery 源码解析六:Events 的实现

    在 Celery 中,除了远程控制之外,还有一个元素可以让我们对分布式中的任务的状态有所掌控,而且从实际意义上来说,这个元素对 Celery 更为重要,这就是在本文中将要说到的 Event. 在 Ce ...

  10. 七、VueJs 填坑日记之渲染一个列表

    在上一篇博文中,我们对vue组件有了一个简单的认识和大概的理解.在之前认识项目结构的时候,我们在/src目录中创建了一个components的文件夹,而今天就要用到了,这个文件夹的作用就是放置我们的自 ...