CSS 的 background 属性

正如我之前所说,文档树中的每个元素都是一个方盒。每个盒都有背景层,它可以是完全透明的、有颜色的或一张图片。背景层由 8 个 CSS 属性(和 1 个简写属性)控制。

background-color

background-color 属性设置元素背景颜色。它的值可以是一个合法的颜色值或 transparent 关键字。

.left{ background-color: #ffdb3a; }
.middle{ background-color: #67b3dd; }
.right{ background-color: transparent; }


背景颜色绘制在由 background-clip 属性指定的盒模型区域内。如果同时设置了背景图片,颜色层会在它们后面。不像图片层可以设置多个,每个元素只拥有一个颜色层。

background-image

background-image 属性为元素定义一个(或多个)背景图片。它的值通常是用   url()  符号定义的图片  url。 none 也是允许的,它会被当做空的一层。

.left{ background-image: url('ire.png'); }
.right{ background-image: none; }


我们也可以指定多个背景图片,用逗号隔开。沿着 z 轴从前向后依次绘制每个图片。

.middle{
    background-image: url('khaled.png'), url('ire.png');
    /* Other styles */
    background-repeat: no-repeat;
    background-size: 100px;
}


background-repeat

在 background-size 指定大小和 background-position 指定位置后, background-repeat 属性控制如何平铺背景图片。

属性值可以是以下关键字之一: repeat-x 、 repeat-y 、 repeat 、 space 、 round 、 no-repeat 。除了前两个( repeat-x  和  repeat-y )之外,其他关键字可以写一次来同时定义 x 轴和 y 轴,或分开定义两个维度。

.top-outer-left{ background-repeat: repeat-x; }
.top-inner-left{ background-repeat: repeat-y; }
.top-inner-right{ background-repeat: repeat; }
.top-outer-right{ background-repeat: space; }
 
.bottom-outer-left{ background-repeat: round; }
.bottom-inner-left{ background-repeat: no-repeat; }
.bottom-inner-right{ background-repeat: space repeat; }
.bottom-outer-right{ background-repeat: round space; }


background-size

background-size 属性定义背景图片的大小。它的值可以是一个关键字、一个长度或一个百分比。

属性可用的关键字是 contain 和 cover 。 contain 会按图片比例将其放大至宽和高完全适应区域,与之相反, cover 会将图像调整至能够完全覆盖该区域的最小尺寸。

.left{
    background-size: contain;
    background-image: url('ire.png');
    background-repeat: no-repeat;
}
.right{
    background-size: cover;
    /* Other styles same as .left */
}


对于长度值和百分比,我们可以用来定义背景图片的宽高。百分比值根据元素的尺寸来计算。

.left{ background-size: 50px; /* Other styles same as .left */ }
.right{ background-size: 50% 80%; /* Other styles same as .left */ }


background-attachment

background-attachment 属性控制背景图片在可视区和元素中如何滚动。它有三个可能的值。

fixed 意思是背景图片相对于可视区固定,即使用户滚动可视区时也不移动。 local 意思是背景在元素中位置固定。如果元素有滚动机制,背景图片会相对于顶端定位,当用户滚动元素时,背景图片会离开视野。最后, scroll 意思是背景图片固定,不会随着元素内容滚动。

.left {
    background-attachment: fixed;
    background-size: 50%;
    background-image: url('ire.png');
    background-repeat: no-repeat;
    overflow: scroll;
}
.middle {
    background-attachment: local;
    /* Other styles same as .left */
}
.right {
    background-attachment: scroll;
    /* Other styles same as .left */
}


background-position

这个属性,结合 background-origin 属性,定义了背景图片起始位置。它的值可以是一个关键字、一个长度或一个百分比,我们可以依次定义 x 轴和 y 轴的位置。

可用的关键字有 top 、 right 、 bottom 、 left 和 center 。我们可以任意组合使用,如果只指定了一个关键字,另一个默认是 center 。

.top-left {
    background-position: top;
    background-size: 50%;
    background-image: url('ire.png');
    background-repeat: no-repeat;
}
.top-middle {
    background-position: right;
    /* Other styles same as .top-left */
}
.top-right {
    background-position: bottom;
    /* Other styles same as .top-left */
}
.bottom-left {
    background-position: left;
    /* Other styles same as .top-left */
}
.bottom-right {
    background-position: center;
    /* Other styles same as .top-left */
}


对于长度值和百分比值,我们也可以依次定义 x 轴和 y 轴的位置。百分比值与容器元素相关。

.left{ background-position: 20px 70px; /* Others same as .top-left */ }
.right{ background-position: 50%; /* Others same as .top-left */ }


background-origin

background-origin 属性定义背景图片根据盒模型的哪个区域来定位。

可用的值有 border-box ,图片相对于边框(Border)定位, padding-box ,图片相对于内边距框(Padding)定位, content-box ,图片相对于内容框(Content)定位。

.left {
    background-origin: border-box;
    background-size: 50%;
    background-image: url('ire.png');
    background-repeat: no-repeat;
    background-position: top left;
    border: 10px dottedblack;
    padding: 20px;
}
.middle {
    background-origin: padding-box;
    /* Other styles same as .left*/
}
.right {
    background-origin: content-box;
    /* Other styles same as .left*/
}


background-clip

background-clip 属性决定背景绘制区域,也就是背景可以被绘制的区域。像 background-origin 属性一样,它也基于盒模型。

.left{
    background-clip: border-box;
    background-size: 50%;
    background-color: #ffdb3a;
    background-repeat: no-repeat;
    background-position: top left;
    border: 10px dotted black;
    padding: 20px;
}
.middle{
    background-clip: padding-box;
    /* Other styles same as .left*/
}
.right{
    background-clip: content-box;
    /* Other styles same as .left*/
}


background

最后, background 属性是其他背景相关属性的简写。子属性的顺序并没有影响,因为每个属性值的数据类型不同。然而,对于 background-origin  和  background-clip 属性,如果只指定了一个盒模型区域,会应用到两个属性。如果指定了两个,第一个设置为 background-origin 属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值