0

0

CSS3:background-size背景图片尺寸属性_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-21 09:05:25

|

1540人浏览过

|

来源于php中文网

原创

background-size可以设置背景图片的大小,数值包括 长度length和百分比percentage。 并且会根据背景原点位置background-origin设置其图片覆盖的范围。那么下面我们一起来了解这个background-size属性吧。

background-size语法

w3c对background-size的语法规定如下:

属性名: background-size
属性值: * 其中 bg-size = [ | | auto ]{1,2} | cover | contain
初始值: auto auto
应用于: 所有元素
继承性:
百分比: 见下文注解
计算值: 根据指定

语法解释

1、length,percentage,根据给定长度值或者百分比来调整背景图片大小。auto为默认值,这三个值最小可重复一次,最大重复两次。对于这些值有以下解释:
第一个值为设置图片宽度,第二个值为图片的高度;但是不管是用什么值,都不能为负值
假如只给定一个值,那么第二个自动的为 'auto';
假如指定为percentage百分比值,那么背景图大小是根据相对的背景区域来做调整,这个背景区域是由background-origin来来决定的。这在上面已经有提到过了关于图片原点的讨论。这里有必要提到 假如background-attachment:fixed,那么其背景相对区域就是初始包含块也就是视窗。

立即学习前端免费学习笔记(深入)”;

/* 一个值: 这个值指定图片的宽度,那么第二个值为auto */background-size: autobackground-size: 50%background-size: 3embackground-size: 12px/* 两个值: 第一个值指定图片的宽度,第二个值指定图片的高度 */background-size: 50% autobackground-size: 3em 25%background-size: auto 6pxbackground-size: auto auto/*多重背景,请用逗号隔开,在CSS语法中凡语法后跟*或者#,都是可以无限重复的,但是必须用逗号隔开。 */background-size: auto, auto     /* 不要跟background-size: auto auto混淆了 */background-size: 50%, 25%, 25%background-size: 6px, auto, containbackground-size: inherit                       <ol>                                                     <li> 1 </li>                                <li> 2 </li>                                <li> 3 </li>                                <li> 4 </li>                                <li> 5 </li>                                <li> 6 </li>                                <li> 7 </li>                                <li> 8 </li>                                <li> 9 </li>                                <li> 10 </li>                                <li> 11 </li>                                <li> 12 </li>                                <li> 13 </li>                                <li> 14 </li>                                <li> 15 </li>                                <li> 16 </li>                                <li> 17 </li>                                <li> 18 </li>                                <li> 19 </li>                                <li> 20 </li>                       </ol>

代码laycode - v1.1

Perplexity
Perplexity

Perplexity是一个ChatGPT和谷歌结合的超级工具,可以让你在浏览互联网时提出问题或获得即时摘要

下载

2、contain,按比例调整背景图片,使得其图片宽高比自适应整个元素的背景区域的宽高比,因此假如指定的图片尺寸过大,而背景区域的整体宽高不能恰好包含背景图片的话,那么其背景某些区域可能会有空白。看以下代码

.im-com{    width:200px;    height:50px;        background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*图片的宽高为440*440,而元素相对区域高度为50*/     background-size:contain;}.im-com-1{    width:50px;    height:100px;       background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*元素相对区域宽度为50*/     background-size:contain;}                       <ol>                                                     <li> 1 </li>                                <li> 2 </li>                                <li> 3 </li>                                <li> 4 </li>                                <li> 5 </li>                                <li> 6 </li>                                <li> 7 </li>                                <li> 8 </li>                                <li> 9 </li>                                <li> 10 </li>                                <li> 11 </li>                                <li> 12 </li>                                <li> 13 </li>                                <li> 14 </li>                                <li> 15 </li>                                <li> 16 </li>                       </ol>

代码laycode - v1.1

当图片恰好自适应铺满元素的宽度或者高度,那么元素的会有空白处存在,也就是图中红色框框都显示了空白。

2、cover,按比例调整背景图片,这个属性值跟contain正好相反,背景图片会按照比如自适应铺满整个背景区域。假如背景区域不足以包含背景图片的话,那么背景图片就会被咔嚓。

.im-com{    width:200px;    height:50px;        background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*图片的宽高为440*440,而元素相对区域高度为50*/     background-size:cover;}.im-com-1{    width:50px;    height:100px;       background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*元素相对区域宽度为50*/     background-size:cover;}                       <ol>                                                     <li> 1 </li>                                <li> 2 </li>                                <li> 3 </li>                                <li> 4 </li>                                <li> 5 </li>                                <li> 6 </li>                                <li> 7 </li>                                <li> 8 </li>                                <li> 9 </li>                                <li> 10 </li>                                <li> 11 </li>                                <li> 12 </li>                                <li> 13 </li>                                <li> 14 </li>                                <li> 15 </li>                                <li> 16 </li>                       </ol>

代码laycode - v1.1

当使用了cover这个值的时候,那么正好就跟contain相反,其会正好覆盖整个背景相对区域,但是背景图片的某些部分就看不见,如下图的狗的下半身和右侧身体显示不全。

说说背景图片计算值

假如说只是拿单一的数值或者具体数值来解释那理解起来应该不难,但假如用混合长度来说,可能会有点一下子明白不上来。

规范给了几个例子,不妨拿出来一下:先声明,所以的元素尺寸为 100*100

100% 100%背景图片将铺满整个内容区,假如说元素有固有宽高,那么背景图片铺满整个100*100背景区域div {    background-image: url(plasma.png);    background-repeat: no-repeat;    background-size: 100% 100%;    background-origin: content-box }背景图片调整为宽度为50*50,但是背景图片的原点位置为边框box而不是padding-boxp {    background-image: url(tubes.png);    background-size: 50% auto;    background-origin: border-box }背景图片尺寸调整为15*15para {    background-size: 15px 15px;    background-image: url(tile.png)}这是默认值,也就是auto auto,此时背景图片的尺寸将会是跟图片的固有尺寸一样.body {    background-size: auto;            /* 默认值 */    background-image: url(flower.png) }假如两个都是百分比,此时图片就会根据背景区域来按照宽高比自适应,此处背景图片为20*30,但是因为背景重复用了 'round'循环,因此背景区域高度划分了3个33.3等高区域,所以背景图片会自适应调整为20*33.3p {    background-image: url(chain.png);    background-repeat: no-repeat round;    background-size: 20% 30% }                       <ol>                                                     <li> 1 </li>                                <li> 2 </li>                                <li> 3 </li>                                <li> 4 </li>                                <li> 5 </li>                                <li> 6 </li>                                <li> 7 </li>                                <li> 8 </li>                                <li> 9 </li>                                <li> 10 </li>                                <li> 11 </li>                                <li> 12 </li>                                <li> 13 </li>                                <li> 14 </li>                                <li> 15 </li>                                <li> 16 </li>                                <li> 17 </li>                                <li> 18 </li>                                <li> 19 </li>                                <li> 20 </li>                                <li> 21 </li>                                <li> 22 </li>                                <li> 23 </li>                                <li> 24 </li>                                <li> 25 </li>                                <li> 26 </li>                                <li> 27 </li>                                <li> 28 </li>                                <li> 29 </li>                                <li> 30 </li>                                <li> 31 </li>                       </ol>

代码laycode - v1.1

在MND帮助文档中还提到了关于火狐的渐变图片背景问题,不过那是涉及到Firefox8,规范中不推荐同时使用px和auto,因为在8以前的火 狐浏览器不支持重复渲染,但是我在caniuse上看见的版本是31+,so,你就尽情的用吧。并且对于移动浏览器的支持还是非常的好的,请看下图可知, 除了opera8部分不支持以外:

应用场景

目前用到background-size的场景都是基于webapp的背景图上,大致的情况是,比如说最常见的logo作为某个元素的背景,但logo很复杂,假如说我们按照设计图上的去切片的话,那会有两种可能:
1、按照csser的分辨率去切片,比如高度为50px,logo被直接缩放到50px那就会很别扭,而且估计那那画面太美,你都不敢看;
2、按照射击湿设计的分辨率去切的话,有可能设计图的logo尺寸会很大,但是我们csser写的时候高度只有50px,那logo就会显示不全;

这时候background-size就发挥其重要的作用了,我们可以通过对背景图片大小的自适应缩放,而不会影响到起美观性又能全部显示我们所需要的效果。

直接甩出你的手机出来吧。。。↓

?

参考资料:
http://dev.w3.org/csswg/css-backgrounds/#background-size
https://developer.mozilla.org/en-US/docs/Web/CSS/background-size#Notes

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1044

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

334

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

213

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

35

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

111

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

77

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

17

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

813

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

97

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号