>  기사  >  웹 프론트엔드  >  CSS의 배경 이미지 설정 예에 대한 자세한 설명

CSS의 배경 이미지 설정 예에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-22 09:22:322771검색

배경은 CSS의 중요한 부분이자 알아야 할 CSS의 기본 지식 중 하나입니다. 이 기사에서는 background-attachment 등과 같은 속성을 포함하여 CSS 배경(Background)의 기본 사용법을 다룰 것입니다. 또한 CSS3(4 포함)의 배경(Background)뿐만 아니라 배경(Background)에 대한 몇 가지 일반적인 기술도 소개합니다. 새로운 배경 속성).

Background in css2

Overview

CSS2에는 5가지 주요 배경 속성이 있습니다.

* background-color: 채워진 배경의 색상을 지정합니다.

* background-image: 배경 이미지로 참조 이미지.

* background-position: 요소의 배경 이미지 위치를 지정합니다.

* background-repeat: 배경 이미지를 반복할지 여부를 결정합니다.

* background-attachment: 배경 이미지가 페이지와 함께 스크롤되는지 여부를 결정합니다.

이러한 속성은 모두 하나의 축약된 속성인 배경으로 결합될 수 있습니다. 주목해야 할 한 가지 중요한 점은 배경이 패딩 및 테두리를 포함하여 요소의 모든 콘텐츠 영역을 차지하지만 요소의 여백은 포함하지 않는다는 것입니다. Firefox, Safari, Opera 및 IE8에서는 잘 작동하지만 IE6 및 IE7에서는 배경에 테두리가 포함되지 않습니다.


기본 속성

Background-color(배경색)

background-color 속성은 배경을 단색으로 채워줍니다. 이 색상을 지정하는 방법은 여러 가지가 있으며 다음 방법은 모두 동일한 결과를 제공합니다.

background-color: blue;
background-color: rgb(0, 0, 255);
background-color: #0000ff;

배경색을 투명하게 설정하면 그 아래에 있는 요소가 표시됩니다.

背景图(background-image)

background-image 属性允许指定一个图片展示在背景中。可以和 background-color 连用,因此如果图片不重复地话,图片覆盖不到地地方都会被背景色填充。代码很简单,只需要记住,路径是相对于样式表的,因此以下的代码中,图片和样式表是在同一个目录中的。

background-image: url(image.jpg);

但是如果图片在一个名为 images 的子目录中,就应该是:

background-image: url(images/image.jpg);

糖伴西红柿:使用 ../ 表示上一级目录,比如 background-image: url(../images/image.jpg); 表示图片位于样式表的上级目录中的 images 子目录中。有点绕,不过这个大家应该都知道了,我就不详说了。前端观察 版权所有,转载请保留链接。

背景平铺(background-repeat)

设置背景图片时,默认把图片在水平和垂直方向平铺以铺满整个元素。这也许是你需要的,但是有时会希望图片只出现一次,或者只在一个方向平铺。以下为可能的设置值和结果:

background-repeat: repeat; 
background-repeat: no-repeat; 
background-repeat: repeat-x; 
background-repeat: repeat-y; 
background-repeat: inherit;

背景定位(background-position)

background-position 属性用来控制背景图片在元素中的位置。技巧是,实际上指定的是图片左上角相对于元素左上角的位置。
下面的例子中,设置了一个背景图片并且用 background-position 属性来控制它的位置,同时也设置了 background-repeat 为 no-repeat。计量单位是像素。第一个数字表示 x 轴(水平)位置,第二个是 y 轴(垂直) 位置。

background-position: 0 0; 
 background-position: 75px 0;
 background-position: -75px 0;
 background-position: 0 100px;

background-position 属性可以用其它数值,关键词和百分比来指定,这比较有用,尤其是在元素尺寸不是用像素设置时。

关键词是不用解释的。x 轴上:

  • * left
    * center
    * right

y 轴上:

  • * top
    * center
    * bottom

顺序方面和使用像素值时的顺序几乎一样,首先是 x 轴,其次是 y 轴,像这样:

background-position: top right;

使用百分数时也类似。需要主要的是,使用百分数时,浏览器是以元素的百分比数值来设置图片的位置的。看例子就好理解了。假设设定如下:

background-position: 100% 50%;

This goes 100% of the way across the image (i.e. the very right-hand edge) and 100% of the way across the element (remember, the starting point is always the top-left corner), and the two line up there. It then goes 50% of the way down the image and 50% of the way down the element to line up there. The result is that the image is aligned to the right of the element and exactly half-way down it.

糖伴西红柿:这一段没想到合适的翻译,保留原文,意译。前端观察 版权所有,转载请保留链接。

update: 感谢天涯的指教,这段搞明白了。使用百分数定位时,其实是将背景图片的百分比指定的位置和元素的百分比位置对齐。也就是说,百分数定位是改变了背景图和元素的对齐基点。不再像使用像素和关键词定位时,使用背景图和元素的左上角为对齐基点。例如上例的 background-position: 100% 50%; 就是将背景图片的 100%(right) 50%(center) 这个点,和元素的 100%(right) 50%(center) 这个点对齐。

这再一次说明了,我们一直认为已经掌握的简单的东西,其实还有我们有限的认知之外的知识。

注意原点总是左上角,最终的效果是笑脸图片被定位在元素的最右边,离元素顶部是元素的一半,效果和 background-position: right center; 一样。


背景附着

background-attachment 属性决定用户滚动页面时图片的状态。三个可用属性为 scroll(滚动),fixed(固定) 和 inherit(继承)。inherit 单纯地指定元素继承他的父元素的 background-attachment 属性。

为了正确地理解 background-attachment,首先需要明白页面(page)和视口(view port)是如何协作地。视口(view port)是浏览器显示网页的部分(就是去掉工具栏的浏览器)。视口(view port)的位置固定,不变动。

当向下滚动网页时,视口(view port)是不动的,而页面的内容向上滚动。看起来貌似视口(view port)向页面下方滚动了。如果设置 background-attachment: scroll,就设置了当元素滚动时,元素背景也必需随着滚动。简而言之,背景是紧贴元素的。这是 background-attachment 默认值。

用一个例子来更清楚地描述下:

background-image: url(test-image.jpg);
 background-position: 0 0;
background-repeat: no-repeat;
background-attachment: scroll;

当向下滚动页面时,背景向上滚动直至消失。

但是当设置 background-attachment 为 fixed 时,当页面向下滚动时,背景要待在它原来的位置(相对于浏览器来说)。也就是不随元素滚动。

用另一个例子描述下:

background-image: url(test-image.jpg);
background-position: 0 100%;
background-repeat: no-repeat;
background-attachment: fixed;

页面已经向下滚动了,但是图像仍然保持可见。

需要重视的一点是背景图只能出现在它父元素能达到的区域。即使图片是相对于视口(view port)定位地,如果它的父元素不可见,图片就会消失。参见下面的例子。此例中,图片位于视口(view port)的左下方,但是只有元素内的图片部分是可见的。

background-image: url(test-image.jpg);
background-position: 0 100%;
background-repeat: no-repeat;
background-attachment: fixed;

因为图片开始在元素之外,一部分图片被切除了。

背景的简写属性

可以把背景的各个属性合为一行,而不用每次都单独把他们写出来。格式如下:

background: <color> <image> <position> <attachment> <repeat>

例如,下面的声明

background-color: transparent;
background-image: url(image.jpg);
background-position: 50% 0 ;
background-attachment: scroll;
background-repeat: repeat-y;

可以合为单独一行:

background: transparent url(image.jpg) 50% 0 scroll repeat-y;

而且不需要指定每一个值。如果省略值地话,就使用属性地默认值。例如,上面那行和下面这个效果一样:

background: url(image.jpg) 50% 0 repeat-y;

背景的一般用法

除了可以用来使元素更加优雅这类显然的用法之外,背景也可以用于其它的目的。

仿栏

当使用 css 的 float 属性来定位布局元素时,要确保两栏或多栏有相同的长度是比较困难的。如果长度不同,其中一栏的背景会比另外的短,这会破坏整个设计。

仿栏是个非常简单的背景技巧,这个技巧最早发表在A List Apart 。思路很简单:不再给每列单独设置背景,而是给各列的父元素设置一个背景图。所有栏的设计都包含在这张图片之中。

文本替换

在网页上,对于字体的选择是相当有限的。可以使用 sIFR 之类的工具来定制字体,但是这需要用户启用 JavaScript 。一个适用于任意浏览器的简单方法是,用想用的字体来做一张文本图片,并用这张图片作为背景。这样,文本依然出现在文档标记中以供搜索引擎检索和屏幕浏览器识别,但是在浏览器中就会显示首选的字体。

例如,HTML 标记可能是这样的:

<h3>Blogroll</h3>

假如有一个 200 乘 75 的图片,上面有更好看的字体,就可以用如下方式来替换文本:

h3.blogroll {
width: 200px;
height: 75px; 
background:url(blogroll-text.jpg) 0 0 no-repeat; 
text-indent: -9999px; 
}

简单的圆点

无需列表中的圆点看起来很难看。不用再处理所有不同的 list-style 属性,只需要简单地把他们隐藏并用背景图代替就可以了。因为图片可以随意选择,这些圆点就可以看起来更漂亮。

下面,我们把一个无需列表改造成有圆滑圆点的:

ul {
list-style: none; 
}
 ul li {
padding-left: 40px; 
background: url(bulletpoint.jpg) 0 0 no-repeat;
}

CSS3 中的背景

CSS3 中的背景有较多改进。最显著的是多背景图片的选项,同时也增加了4个新属性。

多背景

CSS3 中,可以对一个元素应用一个或多个图片作为背景。代码和 css2 中的一样,只需要用逗号来区别各个图片。第一个声明的图片定位在元素顶部,其它的图片按序在其下排列,例如:

background-image: url(top-image.jpg), url(middle-image.jpg), url(bottom-image.jpg);

新属性:背景修剪(background-clip)

这又把我们带回了文章开始讨论的那个关于边框内图片显示的话题。它被描述为“背景描绘区”。

background-clip 속성은 배경 표시 위치 제어 기능을 향상시키는 데 사용됩니다. 가능한 값은 다음과 같습니다:

* background-clip: border-box;
배경은 테두리 안에 표시됩니다.
* background-clip: padding-box;
배경은 테두리가 아닌 패딩(padding) 안에 표시됩니다.
* background-clip: content-box;
패딩과 테두리가 아닌 콘텐츠 내에서만 배경을 표시합니다.
* background-clip: no-clip;
기본값, 테두리 상자와 동일합니다.

새 속성: background-origin

이 속성은 background-position과 함께 사용됩니다. 배경 위치는 테두리, 패딩 또는 콘텐츠 상자에서 시작하여 계산할 수 있습니다(배경 클립과 유사).

* background-origin: border-box;
테두리를 원점으로 하여 배경 위치 계산을 시작합니다.
* background-origin: padding-box;
내부 패딩을 원점으로 하여 배경 위치 계산을 시작합니다
* 배경 -origin: content- box;
컨텐츠 박스를 원점으로 하여 배경 위치 계산을 시작합니다
background-clip과 background-origin의 차이점에 대한 설명은 CSS3.info를 참조하세요

새 속성: 배경 크기( 배경 크기)

배경 크기는 배경 이미지의 크기를 조정하는 데 사용됩니다. 여러 가지 가능한 값이 있습니다:

* background-size: contain;
요소 크기에 맞게 이미지 축소(픽셀 종횡비 유지)
* background-size: Cover;
이미지를 확장하여 요소 채우기(픽셀 종횡비 유지) 픽셀 종횡비) 종횡비)
* background-size: 100px 100px;
이미지를 지정된 크기로 조정합니다
* background-size: 50% 100%;
이미지를 지정된 크기로 조정합니다. 백분율은 포함 요소의 크기를 기준으로 합니다.

CSS3 규칙 웹사이트에서 몇 가지 예를 살펴볼 수 있습니다.

새 속성: (Background-break)

CSS3에서는 요소를 여러 개의 독립적인 상자로 나눌 수 있습니다(예: 인라인 요소를 여러 줄에 걸쳐 구성). background-break 속성은 이러한 다양한 상자에 배경이 표시되는 방식을 제어하는 ​​데 사용됩니다.

가능한 값은 다음과 같습니다:

* 배경 중단: 연속
기본값. 상자 사이의 거리를 무시합니다(즉, 요소가 여러 개의 상자로 나누어지지 않고 여전히 전체인 것처럼 보입니다)
* 배경 나누기: 경계 상자;
상자 사이의 거리 계산
* 배경 나누기: 각각 -box;
각 상자마다 배경을 개별적으로 다시 그립니다

背景色(background-color)的改进

background-color 在 css3 中有了稍许改进。除了设置背景颜色之外,如果元素底层的背景图不可用,还可以设置一个“回退色”。

通过在回退色之前增加一个斜杠(/)来实现,例如:

background-color: green / blue;

此例中,背景色应该是绿色(green)。然而,如果底层背景图不能使用的话,背景色就是蓝色而不是绿色。如果在斜杠前不指定颜色,默认为透明(transparent)。

背景平铺(background-repeat)的改进

CSS2中当图片平铺时,会被元素在末端截断。CSS3 引入了两个属性来修正这个问题:

* space: 应用同等数量的空白到图片之间,直到填满整个元素
* round: 缩小图片直到正好平铺满元素
关于 background-repeat: space; 的一个例子,可以在 CSS3 规则网站看到。

背景附着(background-attachment)的改进

background-attachment 属性增加了一个新值:local。这是用来配合可以滚动的元素的(设置为 overflow: scroll; 的元素)。当 background-attachment 设置为滚动(scroll)时,背景图不会随元素内容的滚动而滚动。

设置为 background-attachment :local; 时,背景图会随内容的滚动而滚动。

总结

总结一下,css 中关于背景有许多需要知道的知识。但是一旦把这些知识融会贯通了,这些技术和命名约定就变得非常有意义而且很快就会成为潜意识行为了。

如果刚接触 css,主要不断联系就可以较快地掌握背景的要点了。如果是老手,我希望你可以和我一样期待 css3

위 내용은 CSS의 배경 이미지 설정 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.