CSS background
属性就像元素的壁纸 - 它允许您选择视觉背景来设置内容的基调和基调。正如精心挑选的壁纸可以改变房间一样,该background
属性允许您用颜色、图像、渐变甚至良好的老式纯色背景来美化您的网页。它是表达您的创意天赋并使您的设计流行的完美工具!
语法:
该属性的语法background
简单且灵活。看一下这个例子:
selector {
background: value;
}
默认情况下,该background
属性设置为transparent
,充当不可见的画布,让其他元素透过。此属性适用于几乎所有元素,从卑微<div>
到强大<body>
。但是,请记住,并非所有元素都支持该background
属性的所有可能值。例如,您不会期望 a<button>
显示背景图像,对吗?请留意此类警告。
在大多数情况下,该background
属性不是继承的,这意味着子元素不会从其父元素继承背景。但是,这可能会根据您使用的值而有所不同,因此请务必仔细检查每个值的具体行为。
虽然该background
属性不直接支持 CSS 动画,但不用担心!您仍然可以使用 CSS 动画为属性的各个组件设置动画background
,例如颜色、位置或大小。可以将其想象为在壁纸中添加一些微妙的动态 - 一丝优雅让您的设计栩栩如生!
背景颜色
该关键字设置元素的背景颜色。选择您想要的任何颜色,然后观看您的元素以充满活力的色调变得栩栩如生:
selector {
background-color: color;
}
背景图
此关键字允许您将图像设置为元素的背景。就像在墙上挂了一幅美丽的画,瞬间改变了气氛:
selector {
background-image: url(’image.jpg’);
}
背景重复
使用此关键字,您可以控制背景图像的重复方式。想象一个完美对齐的图案,无缝地流过您的元素:
selector {
background-repeat: repeat;
}
背景位置
该关键字决定背景图像的位置。向左、向右、向上或向下移动以找到完美的位置:
selector {
background-position: center;
}
背景大小
使用此关键字更改背景图像的大小。拉伸它、收缩它,或者让它覆盖整个元素——选择权在你手中:
selector {
background-size: cover;
}
学 CSS:完整案例
1.背景位置偏移
放置背景图形非常简单,您可能已经熟悉了。如果我们想将背景定位到元素的右下角,我们应用bottom right
到background-position
. 例如:
#workspace {
width: 100%;
max-width: 668px;
height: 400px;
background-color: #525d62;
background-image: url(images/macbook.png);
background-repeat: no-repeat;
background-position: right bottom;
}
background
或者,在 url 定义之后使用简写, :
#workspace {
width: 100%;
max-width: 668px;
height: 400px;
background: #525d62 url(images/macbook.png) no-repeat right bottom;
}
自从 CSS3 出现以来,我们已经能够指定位置偏移量;到设定位置的精确距离。以 的示例为例bottom right
,我们将bottom 20px right 30px
背景定位在20px
从底部和30px
左侧开始的位置。
#workspace {
width: 100%;
max-width: 668px;
height: 400px;
background-color: #525d62;
background-image: url(images/macbook.png);
background-repeat: no-repeat;
background-position: right 30px bottom 20px;
}
位置 ( bottom
, top
, right
, left
) 可以按任何顺序定义,但必须在每个背景位置之后定义偏移长度。
See the Pen Background Position by Envato Tuts+ (@tutsplus) on CodePen.
2.多背景图片
该background
属性还允许我们添加多个背景图像。因此,让我们用更多的东西和小工具来扩展前面的示例。
See the Pen Multiple Background by Envato Tuts+ (@tutsplus) on CodePen.
我们将这些图像添加到单个background
或background-image
声明中,并用逗号分隔每个图像。我们使用该background-position
属性(也接受多个值)来控制每个背景图像。
#workspace {
height: 400px;
background-color: #525d62;
background-image:
url(images/macbook.png),
url(images/mouse.png),
url(images/hdd.png),
url(images/phone.png),
url(images/ipad.png),
url(images/coffee.png),
url(images/camera.png);
background-repeat: no-repeat;
background-position:
50% 50%, /* macbook.png */
75% 295px, /* mouse.png */
75% 230px, /* hdd.png */
96% 240px, /* phone.png */
20% 250px, /* ipad.png */
22% 190px, /* coffee.png */
7% 280px; /* camera.png */
}
我们可以使用固定单位(例如像素)、灵活单位(例如百分比)或两者的组合。
每对值表示从容器元素的左上角到图像的左上角的坐标。例如,相机图像的左上角距离容器顶部 280 像素,然后是左侧可用宽度的 7%。
注意:可用宽度是容器元素的总宽度减去背景图像的宽度。因此,沿 x 轴定位 50% 的背景图像看起来完全居中!
动图
此外,由于background-position
是一个可动画的属性,我们可以创建一个更加生动、引人注目的背景:
#workspace {
width: 600px;
height: 400px;
background-color: #525d62;
background-repeat: no-repeat;
background-image:
url(images/macbook.png),
url(images/mouse.png),
url(images/hdd.png),
url(images/phone.png),
url(images/ipad.png),
url(images/coffee.png),
url(images/camera.png);
background-position:
50% 50%,
430px 295px,
425px 230px,
480px 240px,
105px 250px,
120px 190px,
40px 280px;
animation: 3s ease 0s inView forwards;
}
@keyframes inView {
0% {
background-position-y: 600%, 451px, -448px, 240px, 496px, -44px, 280px;
background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;
}
20% {
background-position-y: 50%, 451px, -448px, 240px, 496px, -44px, 280px;
background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;
}
30% {
background-position-y: 50%, 295px, -448px, 240px, 496px, -44px, 280px;
background-position-x: 50%, 75%, 75%, 200%, 20%, 22%, -100%;
}
40% {
background-position-y: 50%, 295px, 230px, 240px, 250px, -44px, 280px;
background-position-x: 50%, 75%, 75%, 200%, 0%, 22%, -100%;
}
50% {
background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px;
background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, -100%;
}
60% {
background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px;
background-position-x: 50%, 75%, 75%, 96%, 0%, 22%, 7%;
}
100% {
background-position-y: 50%, 295px, 230px, 240px, 250px, 190px, 280px;
}
}
在这里,我们沿着时间轴设置了许多关键帧。在每个关键帧,我们都更改了每个背景图像的background-position-x
和。background-position-y
动画确实很初级,所以请 fork CodePen 并改进它!
注:点击笔右下角的Rerun可以看到动画:
See the Pen Multiple Background with Animation by Envato Tuts+ (@tutsplus) on CodePen.
几个值得注意的点:
我们使用的背景是按顺序排列的;第一个列出的出现在堆栈的顶部,而最后列出的将出现在后台堆栈的底部。
#workspace {
width: 600px;
height: 400px;
background-color: #525d62;
background-image:
url(images/macbook.png),
url(images/mouse.png),
url(images/hdd.png),
url(images/phone.png),
url(images/ipad.png),
url(images/coffee.png),
url(images/camera.png); /* stacked at the bottom */
background-repeat: no-repeat;
}
所有背景子属性(background-repeat
、等)都background-size
可以background-position
定义多次,除了background-color
。如果我们使用简写background
属性应用多个背景,请将背景颜色定义为最新生效的值。例如:
#workspace {
height: 400px;
background:
url(images/macbook.png) 50% 50% no-repeat,
url(images/mouse.png) 430px 295px no-repeat,
url(images/camera.png) 425px 230px no-repeat #525d62;
}
或者,background-color
在简写属性后面添加一个单独的 :
#workspace {
width: 600px;
height: 400px;
background:
url(images/macbook.png) 50% 50% no-repeat,
url(images/mouse.png) 430px 295px no-repeat,
url(images/camera.png) 425px 230px no-repeat;
background-color: #525d62;
}
这两个代码的作用相同,但我发现后者更加直观和可读。
3.混合背景图像
其background-blend-mode
功能与 Photoshop 或 Gimp 等图形应用程序中的功能相同;它将背景图像相互混合,以及与下面的任何内容混合。
它采用了熟悉的价值观,background-blend-mode
例如乔纳森·卡特雷尔(Jonathan Cutrell)在他关于该主题的教程中出色地解释了其他一些价值观。我强烈建议您仔细阅读它,以便我们可以直接了解一些实际示例。
See the Pen Background Blend Mode: Gradient by Envato Tuts+ (@tutsplus) on CodePen.
为了创建这种效果,我们添加背景图像和渐变,并应用overlay
混合模式。
#blend {
background-repeat: no-repeat;
background-image: url( 'img/people-15.jpg' ),
linear-gradient(135deg, rgba(175,0,79,1) 0%,rgba(255,114,187,1) 100%);
background-blend-mode: overlay;
}
叠加层会影响此处列出的两个背景,因此如果您不希望所有内容都混合在一起,则可能需要小心。如果我们想避免所有内容与背景颜色混合,请设置第二个值,该值normal
将应用于我们的第二个背景图像。
#blend {
background-repeat: no-repeat;
background-image: url( '../img/people-15.jpg' ),
linear-gradient(135deg, rgba(175,0,79,1) 0%,rgba(255,114,187,1) 100%);
background-color: yellow;
background-blend-mode: overlay, normal;
}
4.背景剪裁
该background-clip
属性是一个实用程序,用于控制背景颜色和图像在 CSS 内容框模型中的跨度。与属性类似box-sizing
,background-clip
属性采用三个有效值,即:
border-box
是默认值,它跨越背景图像或颜色一直到元素的外边缘。padding-box
将跨越背景直到填充的外边缘,或者换句话说;边框的内边缘。content-box
将保留元素内容中的背景,如下所示:
See the Pen Different Background Clips by Envato Tuts+ (@tutsplus) on CodePen.
我发现一个background-clip
很方便的实际例子是,我必须使用单个元素创建一个带有图标的按钮。在下面的演示中,我们的图像从元素的左边缘跨越到右边缘,即使我们在每一侧添加填充,因为它仍然适用border-box
。
See the Pen CSS Background Clipping by Envato Tuts+ (@tutsplus) on CodePen.
如果我们想用一些空白包围图标,传统上我们必须用另一个元素包裹它,并在该额外元素上应用填充。使用该background-clip
属性,我们可以通过将其设置为 来优雅地完成此操作content-box
,并用与背景颜色相同颜色的边框替换填充。
See the Pen CSS Background Clipping by Envato Tuts+ (@tutsplus) on CodePen.
最后
该background
属性是我们在项目中经常使用的属性。希望这篇文章能让您想起它的广泛而多样的用途,我期待在评论中听到更多的想法。
最后一点:浏览器对这些属性(除了background-blend-mode
)的支持非常好。根据 CanIUse 的说法,从 Internet Explorer 9 开始支持多个背景,但只有几个小问题。背景图像选项,例如background-clip
属性,几乎同样好。
- 背景颜色
- 背景图
- 背景重复
- 背景位置
- 背景大小
- 1.背景位置偏移
- 2.多背景图片
- 动图
- 几个值得注意的点:
- 3.混合背景图像
- 4.背景剪裁
发表评论