CSS中的背景图片的知识点深度

在理解css的背景图片之前需要清楚两个问题,在什么情况下去使用css的背景图片?又在什么情况下去使用img标签的内容图片?html中专门有一个img标签用于向页面中去插入内容图片,那么如何区分这两种情况呢?

如果图片从网页中去掉之后,网页本身仍然具有意义也就是整体看起来没很大的影响,那么该图片就可以使用css作背景图片的处理,换个角度,如果网站的整体发生了很大的变化之后,但是这张图片仍然必不可少,那么这张图片就需要做内容图片的处理。

1、图片的格式

网页中可以使用很多的图片格式,下面简单的列举一些:

  • JPEG:一种位图格式,有损压缩,压缩率越高,损失的细节越多,也可以作为背景图片,不支持透明度设置。
  • PNG:一种位图格式,无损压缩,不适合照片(因为文件很大),适合图标,插图等小尺寸文件,支持透明度设置
  • GIF:主要用于动图,GIF支持透明度设置,但是支持阿尔法分极,因此边缘会有“锯齿”
  • SVG:一种矢量图形格式,本身也是一种标记语言,SVG可以直接嵌入到网页中,也可以作为资源引用;可以用作背景图,也可以用作内容图。
  • WebP:Google开发的一种新的图片形式,结合了JPEG的高压缩率和PNG的阿尔法透明度特点
2、背景图片的位置

background-position属性既可以使用关键字,也可以使用像素、em、百分比,最简单的情况下:可以给两个值,一个表示相对于左侧的偏移量,一个表示相对于顶部的偏移量。

需要注意的是:有些浏览器支持background-position-x和background-position-y属性,这两个属性分别用于独立地在每个轴向上定位图片,这两个非标准属性是IE最早提出的。

  • 如果使用的是px或者em进行物品位置定位,使用像素或em单位来设置背景图片的位置,那么图片的左上角会相对于元素的左上角定位,也就是会偏移指定的数值。如下图:


    使用px进行图片定位处理.png
  • 如果使用的百分比进行图片位置定位的话,不会像绝对数值那样会定位背景图片的左上角,而是定位图片中对应的点坐标,如果水平和垂直都设置为20%,那么实际上是距离图片左边和上边各20%的点,而且这个点会和距离父元素左边和上边各20%的点进行重合。如下图:

    百分比进行图片位置定位.png

    使用关键字来对齐背景图片也是可以的,要在X轴上使用left、center、或者right,在Y轴上用top、center或是bottom,顺序一般都是先X轴后Y轴,但是下面这种写法是无效的:

.box {
  background-position: 50% left; //这种写法规则本身会导致失效!
}
3、calc()计算函数

calc()可以让浏览器代替你计算任何数值,包括(角度、像素、百分比等),甚至还支持混合单位的计算,非常强大,比如:你使用的页面布局为百分比布局,但是在UI设计稿中又需要去进行20px的偏移,那么就可以写成“calc(100% + 20px)”。
同样的,背景图片右侧定位的问题也可以使用calc()去处理,比如:左侧为文本内容,右侧icon图标的定位。

.icon {
  background-position: calc(100% - 1em) 50%;
}

需要注意的是calc()表示法在IE9浏览器中,配合background-position会产生严重的bug,导致浏览器崩溃。

calc()在运算符号左右加上空格的原因是,为了让浏览器把操作符减号与数值的(-)负号区分开来

4、背景裁剪与原点

默认的情况下,背景图片是绘制在元素边框以内的,如果把图片定位到边框的下方,而边框又被设置为半透明,那么图片边缘就会出现半透明的边框,使用background-clip属性可以处理这种情况,background-clip:border-box将其改为padding-box就可以把图片剪裁到内边距盒子内,content-box值会把图片位于内边距及其之外的部分剪裁掉。

  • background-clip: padding-box;
        .img-box img {
            width: 300px;
            height: 300px;
            border: 10px solid rgba(220,220,160,.5);
            padding: 10px;
            background-image: url(img/12.jpeg);
            background-clip: padding-box;
        }
image.png
  • background-clip: border-box;


    image.png
  • background-clip: content-box;


    image.png
5、背景附着

背景会附着在指定的元素后面,如果滚动页面,那么背景也会随着页面的滚动而滚动,通过background-attachment属性改变这种行为。

.img {
  background-attachment:fixed;
}

除了fixed和默认值scroll,还可以把background-attachment设为local,它与scroll的区别在于,scroll会让图片相对于元素本身固定,而local会让背景图片相对于元素中的内容固定,也就是元素设置了固定大小,overflow设置了auto或scroll,则元素内部内容滚动显示时,图片会随之滚动。

6、背景大小

background-size明确指定一个值,可以重新设置图片大小,也可以让它随着元素大小缩放.

.img {
  background-size: 400px 240px;
}

如果希望图片随着元素的缩放而缩放,则必须设置为百分比的形式,不过,百分比设置时不是相对于图片固有的大小,而是相对于容器的大小,如果给图片的宽高都加以百分比的形式处理,那么会导致图片产生变形。

解决办法:只给图片的一个维度设置百分比值,另一个维度设置为auto。

.img {
  background-size: 100% auto;
}

还有一个属性值contain,这个值会让浏览器尽可能的保持图片的最大化,同时不改变图片的宽高比,浏览器决定哪一边使用auto。

.img {
  background-size: contain;
}
image.png

另一个属性值为cover,意思是图片会缩放,覆盖整个元素,同时不会变形,如果在一个高而窄的元素中,元素高度会填满,但是图片的两边会被切除掉。

.img {
  background-size: cover;
}
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容