CSS之background-position属性

本文介绍CSS中的background-position属性,详细解析其如何控制背景图片的位置,包括使用关键词、长度值及百分比进行定位的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.作用:background-position是用来控制元素背景图片的位置。以图片的左上角顶点为原点,属性值为正就代表图片下移或右移,属性值为负就代表图片上移或左移。它接受三种值

- 关键词,比如top、right、bottom、left和center

- 长度值,比如px、em、rem等

- 百分值%

这里写图片描述

在前面我们看到背景图片默认的被放置在放置区的左上角。这是由于background-position的默认的值是0%,0%

这里写图片描述

位置属性可以通过指定一个偏移量(关键词、百分比或长度)、两个偏移量(三种可能值取两个组合)、或者四个偏移量(一个关键词加一个相对数值)来描述

这里写图片描述

如果只提供了一个值,那么另一个方向即被假定为 center。如果提供了两个值,第一个会决定距离左边缘的偏移,即水平位置;第二个值会决定图片从上边缘向下的偏移,即竖直的位置

注意1:注意一对关键字可以交换顺序,一个关键字和百分比或长度的组合不能。因此center left是合法的,50% left则不正确,必须是left 50%。当使用一个关键字和一个长度或百分比的组合时,第一个值总是对应水平偏移,第二个对应竖直偏移

注意2:事实上,关键字是特定百分比值的简写,比如:top相当于 距离上边缘偏移0%,bottom相当于距离上边缘偏移100%,left相当于距离左边缘偏移0%,right相当于距离左边缘偏移100%,center相当于距离任意它被应用的方向偏移50%(水平或竖直)

2.使用绝对值的效果

当你用绝对值指定位置时,就是使背景图片偏离左上角一个特定的量。换句话说,图片会移动离开放置区左上角达到你在background-position中指定的偏移量

最好的解释和理解的方式是看图,这里有两个绝对值background-position的例子,看看浏览器是怎样解释位置和放置背景图片的。两个示例中元素大小100px乘80px

这里写图片描述

绝对值也可以是负数,这种情况下图片就会离开边缘反方向上偏移

这里写图片描述

3.使用百分比的效果

不像使用绝对值的偏移量会从元素左上角移动一个特定的距离,百分比X%偏移会把图片水平宽度X%(或竖直高度X%)的点与容器横向X%的点(或竖直高度X%) 对齐

例如,绝对值位置0% 0%,会让图片0% 0%的点与背景放置区坐标系0% 0%的点对齐。绝对值位置50% 70%会把图片横向50%竖直70%的点与背景放置区横向50%竖直70%的点对齐

这里写图片描述

和使用绝度值一样,百分比也可以有负数,负数移动图片到坐标轴相反的方向上

4.相对任意边缘的偏移

上两节的例子中我们设定、体验了图片相对上边缘和左边缘的偏移的效果 (这对于有一个或两个值的 background-position来说是默认的)

当使用组合关键词和数值成四个值的语法时,你就也能够指定背景图片相对于右边缘和底部边缘的偏移了。为了这样做,你只需要指出你要用的边缘的名字,后面跟上你想要的偏移量就可以了

这里写图片描述

在使用四个值位置的语法时,一定要记得:当给出三个或四个值的时候,每个百分比或绝对长度都必须跟在一个关键词后面,用来指定从哪个边缘上偏移。例如:background-position: bottom 10px right 20px代表 竖直从下边缘偏移10px,水平从右边缘偏移20px。如果三个值已经指定好了,没给出的被假定为0。如果你给出了两个数值偏移量或一个关键词,那么值是无效的,浏览器会使用默认值0% 0%

实例:

这里写图片描述

这里写图片描述

第一张背景图background-position:10px 10px;第二张背景图background-position: center

5.你所不知道的background-position

前面也说过了,background-position取值除了长度值(<length>)和关键词之外,还可以取值为百分比值。当然大家也使用过百分比值,比如:

这里写图片描述

那么问题来了,你真的了解background-position取值为百分比的计算比例吗?如果我的百分比值不是和关键词对等的值呢?那么它是怎么计算的?这一系列的问题,你是否有仔细的思考过。就我个人而言,我以前所理解也存在一个误区

我一直错误的理解为background-position百分比值,它是相对于背景图片的尺寸

实际上,当背景图片尺寸(background-size)不做任何的重置(也就是100% 100%)时,水平百分比的值等于容器宽度百分比值减去背景图片宽度百分比值。垂直百分比的值等于容器高度百分比值减去背景图片高度百分比值

比如前面的示例,如果取值background-position: 75% 50%;,背景图片的起始位置

- 水平位置(x轴):(410 - 100) * 75% = 232.5px

- 垂直位置(y轴):(210 - 100) * 50% = 55px

这里写图片描述

这里写图片描述

总结:background-origin用来定义background-position的原点位置;而background-position用来设置图片相对原点的位置

<think>好的,我现在要回答用户关于CSS background-position属性的用法和示例的问题。首先,我需要确保自己对这个属性有正确的理解,并根据提供的参考资料进行准确的回答。 用户提到的参考引用有三个,其中引用2和引用3直接提到了background-position,而引用1虽然主要讲background-attachment,但可能相关的背景属性之间有关联。我需要重点参考引用2和引用3的内容。 首先,根据引用2,background-position用于设置图片相对于原点的位置,而原点由background-origin定义。引用3则提到background-repeat和background-size,但用户的问题集中在background-position上,所以我需要集中在这个属性的使用方法和示例上。 接下来,我需要整理background-position的基本用法。这个属性通常接受两个值,分别表示水平方向和垂直方向的位置。常见的值包括关键字(如left、center、right和top、center、bottom)、百分比或具体长度单位。如果只提供一个值,另一个方向会默认为center。 然后,我需要考虑如何用示例来说明不同的情况。例如,使用关键字组合、百分比或长度值,以及混合使用不同的单位。同时,结合引用2提到的background-origin,可能需要说明原点位置对background-position的影响,但用户的问题可能不需要深入到这里,除非必要。 另外,引用3提到background-repeat会影响图片的平铺方式,这在示例中可能需要提到,但用户的问题没有直接问这个,所以可能作为补充信息。 现在,我需要确保回答结构清晰,按照用户的要求分步骤说明使用方法,并提供示例代码。同时,引用需要自然地添加到相关段落的末尾,如引用[^2]和引用[^3]。 可能的结构: 1. 属性定义和作用 2. 基本语法 3. 参数类型和示例(关键字、百分比、长度) 4. 注意事项(如默认值、省略值的情况) 5. 综合示例代码 需要检查是否有遗漏的关键点,例如是否提到了初始值、继承性,以及与其他属性(如background-size)的配合使用。根据引用2,background-origin和background-position的关系可能需要简要说明,但用户的问题可能更关注具体用法,所以保持简洁。 最后,生成相关问题,参考用户提供的示例,提出与background-position相关的其他问题,比如与其他属性的配合使用,常见错误等。</think>### CSS background-position 属性详解 #### 1. 属性定义与作用 `background-position` 用于控制背景图片在元素内的起始位置。通过调整水平和垂直方向的定位,可以实现图片的精确布局。 #### 2. 基本语法 ```css background-position: [水平值] [垂直值]; ``` - **参数数量**:支持1-2个参数。若只提供1个值,另一个方向默认居中(`center`)。 - **默认值**:`0% 0%`(即左上角对齐)[^2]。 #### 3. 参数类型与示例 ##### 关键字组合 - **水平关键字**:`left`、`center`、`right` - **垂直关键字**:`top`、`center`、`bottom` ```css /* 示例1:右上角对齐 */ .box { background-position: right top; } /* 示例2:水平居中,底部对齐 */ .box { background-position: center bottom; } ``` ##### 百分比或长度值 - **百分比**:相对于元素尺寸与图片尺寸的差值计算位置。例如 `50% 50%` 表示居中。 - **长度值**:直接指定偏移量(如 `px`、`em`)。 ```css /* 示例3:向右偏移20px,向下偏移10px */ .box { background-position: 20px 10px; } /* 示例4:水平居中(50%),垂直顶部对齐 */ .box { background-position: 50% top; } ``` ##### 混合单位 允许混合关键字、百分比和长度值: ```css /* 示例5:水平从左侧偏移30px,垂直居中 */ .box { background-position: left 30px center; } ``` #### 4. 注意事项 - **与`background-origin`的关联**:定位原点受`background-origin`影响,例如设置为`content-box`时,定位基于内容区域而非边框。 - **与`background-repeat`配合**:若图片被平铺(如`repeat-x`),定位仅影响起始位置[^3]。 #### 5. 综合示例 ```css /* 居中显示不重复的背景图 */ .banner { background-image: url("image.jpg"); background-repeat: no-repeat; background-position: center center; background-size: cover; } /* 自定义雪碧图定位 */ .icon { background-image: url("sprite.png"); background-position: -120px -80px; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值