解剖css3的background-size属性

在我们做项目过程中,可能会遇到一个问题,就是给个背景图的尺寸大小是一样的,可是屏幕大小却有很多种。

比如app前面的几个引导页,你收到的是固定大小尺寸的照片,怎么让这个屏幕可以跟背景图片相适应呢?

有一些解决方案是,根据不同的屏幕大小做不同的照片尺寸,可是这样添加了设计师的工作量,又要加载很多图片,性能变差了不说,还加多了工作量。

有人说那把图片压缩啊,或者用css sprite 拼合成一张图片然后根据background-position设置背景的位置。

可是这些对我来说:“hao gui ma fan”哦

这时我就想到之前用过css3的一个新属性,就是可以使图片布满整个屏幕,就是“background-size”:"cover";

然后我就用了,可是我的图片,在不同屏幕显示不同的尺寸,我要显示的内容跑到屏幕外了,之后我就查了background-size的具体用法

在google的时候,看到了一篇background-size说的挺好的一篇文章,http://www.w3cplus.com/content/css3-background-size

  background-size: auto || <length> || <percentage> || cover || contain

然后出现了下面的取值说明:

1、auto:此值为默认值,保持背景图片的原始高度和宽度;

2、<length>此值设置具体的值,可以改变背景图片的大小;

3、<percentage>此值为百分值,可以是0%?100%之间任何值,但此值只能应用在块元素上,所设置百分值将使用背景图片大小根据所在元素的宽度的百分比来计算。

4、cover:此值是将图片放大,以适合铺满整个容器,这个主要运用在,当图片小于容器时,又无法使用background-repeat来实现时,我们就可以采用cover;将背景图片放大到适合容器的大小,但这种方法会使用背景图片失真;

5、contain:此值刚好与cover相反,其主要是将背景图片缩小,以适合铺满整个容器,这个主要运用在,当背景图片大于元素容器时,而又需要将背景图片全部显示出来,此时我们就可以使用contain将图片缩小到适合容器大小为止,这种方法同样会使用图片失真。

当background-size取值为<length>和<percentage>时可以设置两个值,也可以设置一个值,当只取一个值时,第二个值相当于auto,但这里的auto并不会使背景图片的高度保持自己原始高度,而会与第一个值相同。

看完之后,我就把每个值都试了一遍,可是不对哦,每个属性都不是我要的。

后来认真解析一遍,发现其实每个属性都有自己的结果,具体解释看上面。这时不如直接获取屏幕的宽度和高度,(因为我写的页面是用js写的)

这时果断用了var wid_height=$(window).height();来获取屏幕的高,

然后呢,在传入页面时,在写app页面时,就已经将width设置为“:@app width 1”,就是屏幕的宽度,至于为什么这么写,这是框架封装出来的, 就不要想那么多了。

然后在设置的时候就以“background-size”:"100%"+win_height;来传入。(这里用的方法就是“background-size”:"<percentage> <percentage>")

测试一下,大功告成。很开心,用最简单的方法将问题解决了,界面又好看。

总结一下,首先就是有一点基础,所以知道用什么,之后呢,google是一个好帮手,但是google来的东西毕竟是其他人的,你要善于理解其本质并加以运用,最后还要结合你当前所处的环境,才能最终解决你所遇到的问题。

好了,不啰嗦那么多,旁边的程序猿又说我在装逼了,其实我只是想把自己用最好的、简单的方法将复杂的问题解决,这个思想传递下去。

时间: 2024-10-05 10:49:33

解剖css3的background-size属性的相关文章

css3的Background新属性

前言 CSS3中出现了几种关于背景图片的新属性:background-origin.background-clip.background-position等.之前大致了解了下,但是background-origin与background-clip的区别尚不清楚.就google了一篇,发现不错,翻译下来吧. 原文连接 : The New Background Position in CSS3 Say Hello to Background-Origin and Background-Clip, C

css3中的部分属性

1.阴影box-shadow:x轴偏移量 y轴偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色] [投影方式] 注意:inset(内阴影) 可以写在参数的第一个或最后一个,其它位置是无效的实例 正值表示在对象的底部,负值表示在对象的顶部. .boxshadow-outset{ width:100px; height:100px; box-shadow:4px 4px 6px blue,4px 4px 6px red inset; } .boxshadow-inset{ width:100p

background复合属性详解(上):background-image

background复合属性是个很复杂的属性,花样非常多,比较神奇的是css3 中支持多图片背景了,这篇文章先讲讲background-image属性,其他背景属性会在后续的文章综合总结. 一.最基本的情况是指定一张图片的url作为背景: <style> .parent{ height:200px; width:500px; border: 10px solid rgb(125, 125, 123); background-color: #bff; background-image:url(h

css3 背景background

Css3背景<background> Css3包含多个新的背景属性,它们提供了对背景更强大的控制.可以自定义背景图的大小,可以规定背景图片的定位区域,css3还允许我们为元素使用多个背景图像 属性 描述 Css Background-image 规定背景的背景图 2 Background-position 规定背景的定位 2 Background-repeat 规定背景的重复方式 2 Background-color 规定背景的颜色 2 Background-clip 规定背景的绘制区域 3

CSS3实战1-文本属性text-shadow的用法

text-shadow 定义文本阴影或模糊效果.text-shadow属性在css2中已经定义了,但是在css3中又重新定义了,并且增加了不透明度的效果. 基本语法 text-shadow:none | <shadow> [ , <shadow> ]* <shadow> = <length>{2,3} && <color>? 默认值:无 适用于:所有元素 动画性:是,除了内.外阴影切换时 计算值:指定值 取值: none: 无阴影

css3之其他的属性

1,自由缩放属性resize 这个属性真的很好玩呢,允许用户可以通过拖动的方式来修改元素的尺寸来改变元素的大小. 记住,得加浏览器的前缀 适用对象:可以使用overflow属性的任何元素 取值: none:不可以拖动 both:可以修改元素的宽度和高度 horizontal:只能修改宽度 vertical:只能修改高度 inherit:继承父元素的属性值 2,外轮廓属性outline 效果:与border相似,但与border不同的是,外轮廓线不占用网页布局空间,外轮廓是一种 动态的样式,只有元

CSS3里面的高级属性

-webkit-tap-highlight-color 这个属性只用于iOS (iPhone和iPad).当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背景.要重设这个表现,你可以设置-webkit-tap-highlight-color为任何颜色. 想要禁用这个高亮,设置颜色的alpha值为0即可. 示例 设置高亮色为50%透明的红色: -webkit-tap-highlight-color: rgba(255,0,0,0.5); 浏览器支持:

css中background背景属性概

css中background背景属性概 background:url(背景图片路径)  no-repeat;/*不重复默认在左上方*/ background:url(背景图片路径)  no-repeat center;/*不重复背景图片中间显示*/ background:url(背景图片路径)  no-repeat bottom center;/*不重复背景图片底部中间显示*/ background:url(背景图片路径)  no-repeat right top;/*不重复背景图片右上方显示*

css中background背景属性概述

background:url(背景图片路径) no-repeat;/*不重复默认在左上方*/ background:url(背景图片路径) no-repeat center;/*不重复背景图片中间显示*/ background:url(背景图片路径) no-repeat bottom center;/*不重复背景图片底部中间显示*/ background:url(背景图片路径) no-repeat right top;/*不重复背景图片右上方显示*/ background:url(背景图片路径)