CSS3属性background-size使用指南


Posted in HTML / CSS onDecember 09, 2014

以下内容摘自MDN。因时间原因没能好好整理学习,先引用下来,有时间时再细细整理。

background-size 设置背景图片大小。

复制代码
代码如下:

/* 关键字 */
background-size: cover
background-size: contain
/* 一个值: 这个值指定图片的宽度,图片的高度隐式的为auto */
background-size: 50%
background-size: 3em
background-size: 12px
background-size: auto
/* 两个值: 第一个值指定图片的宽度,第二个值指定图片的高度 */
background-size: 50% auto
background-size: 3em 25%
background-size: auto 6px
background-size: auto auto
/* 逗号分隔的多个值:设置多重背景 */
background-size: auto, auto /* 不同于background-size: auto auto */
background-size: 50%, 25%, 25%
background-size: 6px, auto, contain
background-size: inherit

Values
<length>
<length> 值,指定背景图片大小,不能为负值。
<percentage>
<percentage> 值,指定背景图片相对背景区(background positioning area)的百分比。背景区由background-origin设置,默认为盒模型的内容区与内边距,也可设置为只有内容区,或者还包括边框。如果attachment 为fixed,背景区为浏览器可视区(即视口),不包括滚动条。不能为负值。
auto
以背景图片的比例缩放背景图片。
cover
缩放背景图片以完全覆盖背景区,可能背景图片部分看不见。
contain
缩放背景图片以完全装入背景区,可能背景区部分空白。
位图一定有固有尺寸与固有比例,矢量图可能两者都有,也可能只有一个。渐变视为只有固有尺寸或者只有固有比例的图片。

背景图片大小计算

如果指定了 background-size 的两个值并且不是auto:
背景图片按指定大小渲染。
contain 或 cover:
保留固有比例,最大的包含或覆盖背景区。如果图像没有固有比例,则按背景区大小。
auto 或 auto auto:
图像如果有两个长度,则按这个尺寸。如果没有固有尺寸与固有比例,则按背景区的大小。如果没有固有尺寸但是有固有比例, 效果同 contain。如果有一个长度与比例,则由此长度与比例计算大小。如果有一个长度但是没有比例,则使用此长度与背景区相应的长度。
一个为 auto 另一个不是auto:
如果图像有固有比例,则指定的长度使用指定值,未指定的长度由指定值与固有比例计算。如果图像没有固有比例,则指定的长度使用指定值,未指定的长度使用图像相应的固有长度,若没有固有长度,则使用背景区相应的长度。
注意,对于没有固有尺寸或固有比例的矢量图不是所有的浏览器都支持。特别注意测试Firefox 7- 与Firefox 8+,以确定不同之处能否接受。

Examples
background-size: cover 演示 与  background-size: contain 演示 在新窗口打开,这样你可以看到当背景区大小变化时 contain 与 cover 是怎样的。 系列演示:background-size 及其与background-*属性的关联  很好的说明了单独使用 background-size 及与其它属性共同使用。

Notes
如果用渐变作为背景并且对它使用了background-size ,最好不要只用一个auto, 或者只指定一个宽度值 (例如 background-size: 50%)。对这两种情况 Firefox 8有所改变, 并且目前各浏览器表现不一致,不是全部浏览器都完全支持 CSS3 background-size 规范 与 CSS3 Image Values gradient 规范。

复制代码
代码如下:

.bar {
width: 50px; height: 100px;
background-image: gradient(...);
/* 不推荐 */
background-size: 25px;
background-size: 50%;
background-size: auto 50px;
background-size: auto 50%;
/* 可行 */
background-size: 25px 50px;
background-size: 50% 50%;
}

特别不推荐对渐变px与auto一起用, 因为Firefox 8之前不能重复渲染,并且对于没有实现Firefox 8渲染特性的浏览器,不知道指定了背景的元素的确切大小。

IE9及以上才支持。

HTML / CSS 相关文章推荐
纯CSS实现预加载动画效果
Sep 06 HTML / CSS
详解css3 object-fit属性
Jul 27 HTML / CSS
CSS类名支持中文命名的示例
Apr 04 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
Apr 16 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
Sep 12 HTML / CSS
HTML5的文档结构和新增标签完全解析
Apr 21 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
Apr 25 HTML / CSS
H5混合开发app如何升级的方法
Jan 10 HTML / CSS
HTML5之消息通知的使用(Web Notification)
Oct 30 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
Jul 10 HTML / CSS
html5 video全屏播放/自动播放的实现示例
Aug 06 HTML / CSS
使用CSS实现音波加载效果
May 07 HTML / CSS
CSS3属性box-shadow使用指南
Dec 09 #HTML / CSS
CSS3属性box-sizing使用指南
Dec 09 #HTML / CSS
使用css3实现的tab选项卡代码分享
Dec 09 #HTML / CSS
使用css3实现的windows8开机加载动画
Dec 09 #HTML / CSS
css3的transform中scale缩放详解
Dec 08 #HTML / CSS
css3实例教程 一款纯css3实现的发光屏幕旋转特效
Dec 07 #HTML / CSS
css3的transform造成z-index无效解决方案
Dec 04 #HTML / CSS
You might like
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
destoon各类调用汇总
2014/06/20 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
2020/01/18 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
Python决策树分类算法学习
2017/12/22 Python
使用tensorflow实现线性svm
2018/09/07 Python
Python 监测文件是否更新的方法
2019/06/10 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Python基于WordCloud制作词云图
2019/11/29 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
详解Python中namedtuple的使用
2020/04/27 Python
python3跳出一个循环的实例操作
2020/08/18 Python
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
MySQL面试题目集锦
2016/04/14 面试题
《大自然的语言》教学反思
2014/04/08 职场文书
软件项目实施计划书
2014/05/02 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
天鹅湖观后感
2015/06/09 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python