图片的object-fit与背景图的background-size

一、object-fit

object-fit CSS 属性指定可替换元素(例如: 或 )的内容应该如何适应到其使用高度和宽度确定的框。
注:它一般仅适用于可替换元素,比如 img 和 video 标签,可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等。

object-fit 属性由下列的值中的单独一个关键字来指定:

说明
contain 保持原有尺寸比例,被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比。整个对象在填充盒子的同时保留其长宽比,因此如果宽高比与框的宽高比不匹配,该对象将被添加“黑边”。
cover 保持原有尺寸比例,但部分内容可能被剪切。被替换的内容在保持其宽高比的同时填充元素的整个内容框,如果对象的宽高比与内容框不相匹配,该对象将被剪裁以适应内容框。
fill 默认,不保证保持原有的比例,内容拉伸填充整个内容容器,被替换的内容正好填充元素的内容框。如果对象的宽高比与内容框不相匹配,那么该对象将被拉伸以适应内容框。
none 被替换的内容将保持其原有的尺寸
scale-down 保持原有尺寸比例,内容的尺寸与 nonecontain 中的一个相同,取决于它们两个之间谁得到的对象尺寸会更小一些。

对于object-fit: none; 如果你实际去使用,这里可能有个疑惑:如果截图去测量实际的图片显示大小,有可能会遇到测量的尺寸似乎并不等于图片原有的尺寸。
图片的object-fit与背景图的background-size_第1张图片
这其实跟devicePixelRatio有关,上述截图时的devicePixelRatio=1.25,而不是1。

二、background-size

background-size 设置背景图片大小。图片可以保有其原有的尺寸,或者拉伸到新的尺寸,或者在保持其原有比例的同时缩放到元素的可用空间的尺寸。


background-size 属性可以由数值、百分比或者下列的关键字来指定:

说明
auto 以背景图片的比例缩放背景图片。
cover 缩放背景图片以完全覆盖背景区,可能背景图片部分看不见。和 contain 值相反,cover 值尽可能大的缩放背景图像并保持图像的宽高比例(图像不会被压扁)。该背景图以它的全部宽或者高覆盖所在容器。当容器和背景图大小不同时,背景图的 左/右 或者 上/下 部分会被裁剪。
contain 缩放背景图片以完全装入背景区,可能背景区部分空白。contain 尽可能的缩放背景并保持图像的宽高比例(图像不会被压缩)。该背景图会填充所在的容器。当背景图和容器的大小的不同时,容器的空白区域(上/下或者左/右)会显示由 background-color 设置的背景颜色

背景图片大小计算:

(1)background-size 的两个值并且不是 auto:背景图片按指定大小渲染。
(2)containcover:保留固有比例,最大的包含或覆盖背景区。如果图像没有固有比例,则按背景区大小。
(3)autoauto auto:图像如果有固定尺寸,则按这个尺寸。如果没有固有尺寸与固有比例,则按背景区的大小。如果没有固有尺寸但是有固有比例,效果同 contain。如果有一个长度与比例,则由此长度与比例计算大小。如果有一个长度但是没有比例,则使用此长度与背景区相应的长度。
(4)一个为 auto 另一个不是 auto:
如果图像有固有比例,则指定的长度使用指定值,未指定的长度由指定值与固有比例计算。如果图像没有固有比例,则指定的长度使用指定值,未指定的长度使用图像相应的固有长度,若没有固有长度,则使用背景区相应的长度。
(5)当指定百分比时,是指定背景图片相对背景区(background positioning area)的百分比。背景区由background-origin设置,默认为盒模型的内容区与内边距,也可设置为只有内容区,或者还包括边框。如果background-attachment 为fixed,背景区为浏览器可视区(即视口),不包括滚动条。不能为负值。

你可能感兴趣的:(Css学习,前端,css)