/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

研究下CSS3的background-size属性

2016-03-02 十有三 0 浏览:9361 Web前端 HTML | CSS

最近项目正好有用到CSS3的background-size属性,就抽空的研究下。以前网站很少会使用到这个属性,背景图片和父元素的宽高都是固定的,主要是因为以前网站只在PC上显示所以都采用固定式布局!但是现在的网站都要考虑在多种设备(比如手机、平板)上如何较好的显示,这样就需要背景图片的尺寸能够灵活的进行改变,使用background-size属性可以在某些方面简单的处理这类问题。

PS:
1、文中的所有范例代码已经整合成一个页面,可以点此下载:DEMO
2、点击此处查看W3C文档

先看下W3C对此属性的语法说明:

background-size属性语法说明

从上图中可看出此属性一共有4种类型的属性值:length(设置尺寸)、percentage(百分比)、cover(扩展覆盖)、contain(自动缩放到适应)。下面会对这四种属性值类型进行测试和说明。

这是演示中使用的背景图片bg-earth.jpg,宽高为200px*199px:

背景图素材

演示代码中的背景图片父元素宽高都固定为400px*200px。父元素的样式如下:

<style type="text/css">
    .container {
        width: 400px;
        height: 200px;
        background-image: url(bg-earth.jpg);
        background-repeat: no-repeat;
        border: 3px solid #0000ff;
    }               
</style>

设置固定尺寸的背景图片(length)

这里展示两种尺寸的来进行对比,首先是800px*300px:

<div class="container" style="background-size: 800px 300px;"></div>

背景尺寸宽高为800px*300px

背景图片尺寸超出了父元素的最大尺寸,导致超出部分被隐藏,图片也变形了。然后看下设置尺寸为100px*200px:

<div class="container" style="background-size: 100px 200px;"></div>

背景尺寸宽高为100px*200px

背景图片宽度小于父元素,所以被压窄了。

背景图片的宽高是根据父元素的宽高以百分比进行缩放(percentage)

这里同样使用两种不同百分比进行对比,先看下设置成百分百的:

<div class="container" style="background-size: 100% 100%;"></div>

背景尺寸宽高为100%*100%

可以看到正好填满整个父元素,接下来看使用宽50%,高60%进行缩放:

<div class="container" style="background-size: 50% 60%;"></div>

背景尺寸宽高50%*60%;

背景图宽=父元素的宽*50%,高=父元素的高*60%。

背景图片扩展并覆盖填充满整个父元素(background-size:cover)

先看下演示代码和结果图:

<div class="container" style="background-size: cover;"></div>

将背景的尺寸设置为cover

使用cover会有很多种情况,但可以肯定的是,cover一定会将背景图片覆盖满整个元素,无论背景图的大小如何。

如果背景图片的宽度小于父元素宽度,则图片宽度进行压缩,反之则进行拉伸,高度也是一样的。所以如果尺寸差别太大会造成图片严重变形,但是好处就是被填充的元素背景会没有空白。

此外注意一点,背景图超出父元素的备份会被隐藏掉。

背景图片尺寸宽度和高度完全适应内容区域(background-size:contain)

其实就是背景图会根据自身的宽高比例进行缩放,好处是图片不会严重变形,造成太扁或者太窄,但是缺点也很明显,很容易导致背景有空白。演示代码:

<div class="container" style="background-size: contain;"></div>

背景尺寸设置为contain属性值

可以看到背景图片是完全没有变形的,依然按照本身尺寸比例进行缩小,如果父元素的宽高允许的话则会进行放大。


作者:十有三

出处:https://shiyousan.com/post/635925364929848548

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: 设置Windows10的微软拼音输入法默认为英文
  • 下一篇: 简单处理VS2013无法启动 IIS Express Web的问题

相关文章
  • 操作系统和URL中斜杠/和反斜杠\之间的区别以及运用
  • javascript 实现函数/方法重载效果
  • 实现百度分享自定义或动态设置URL
  • 解决和分析CSS中z-index属性无效的问题
  • HTML小技巧:使用CSS3属性绘制圆形元素和图片
  • limarquee轮番插件图片略微抖动的问题

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • HTML小技巧:使用CSS3属性绘制圆形元素和图片
  • 修改Discuz!NT源码出现'List' is an ambiguous reference(即不明确的引用)错误
  • ASP.NET MVC AJAX调用没有反应和返回结果
  • 解决鲁大师卸载出现残留文件Hpsvc.dll-无法删除提示文件正在使用
  • 解决服务器80端口监听异常导致无法打开和访问网站的问题

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号