知道有这个属性存在,是一个很偶然的机会。有一天,设计部的一个小伙伴给了我一个网址,说很有个性,让我看一下,当发现一个很有意思的效果时,作为一个前端小兵的我当然是第一时间开始审查元素,然后看到了这个从没听说过的属性 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. Python面向对象篇之元类,附Django Model核心原理

    关于元类,我写过一篇,如果你只是了解元类,看下面这一篇就足够了. Python面向对象之类的方法和属性 本篇是深度解剖,如果你觉得元类用不到,呵呵,那是因为你不了解Django. 在Python中有一 ...

  2. 使用sklearn进行数据挖掘-房价预测(6)—模型调优

    通过上一节的探索,我们会得到几个相对比较满意的模型,本节我们就对模型进行调优 网格搜索 列举出参数组合,直到找到比较满意的参数组合,这是一种调优方法,当然如果手动选择并一一进行实验这是一个十分繁琐的工 ...

  3. 0_Simple__clock + 0_Simple__clock_nvrtc

    使用 clock() 函数在CUDA核函数内部进行计时,将核函数封装为PTX并在另外的代码中读取和使用. ▶ 源代码:文件内建核函数计时. #include <stdio.h> #incl ...

  4. 2.安装Nginx

    安装稳定版本的nginx 1.为CentOS系统安装yum仓库,创建文件 /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=htt ...

  5. Nginx Location 匹配

    location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹配,不区分大小写^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配 ...

  6. HTML学习笔记 cs动画基础(分列效果可用于做瀑布流) 第十五节 (原创) 参考使用表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 虚拟机通信配置与Xshell连接

    本文主要讲解虚拟机通信配置的详细步骤和Xshell工具连接,以及如何诊断网络问题并进行相应配置的问题. 1. 虚拟机通信配置 虚拟机通信配置的基本流程如图所示: 首先,我们先打开新建的虚拟机,然后输入 ...

  8. Python - SIP参考指南 - 介绍

    介绍 本文是SIP4.18的参考指南.SIP是一种Python工具,用于自动生成Python与C.C++库的绑定.SIP最初是在1998年用PyQt开发的,用于Python与Qt GUI toolki ...

  9. Spark之MapReduce原理

    参考http://www.cnblogs.com/wuyudong/p/mapreduce-principle.html MapReduce   我们来拆开看: Mapping(映射)对集合里的每个目 ...

  10. phpcms v9 前台getshell脚本

    phpcms v9 前台getshell脚本 用法:python phpcmsv9getshell.py http://baidu.com # -*- coding:utf-8 -*- ''' --- ...