CSS 背景位置 background-position属性

CSS 背景位置 background-position属性背景位置除了背景背景平铺外 CSS 还提供了另一个强大的功能 即背景定位技术 能够精确控制背景在对象中的位置 默认情况下 背景图像都是从元素 padding 区域的左上角开始出现的 但设计师往往希望背景能够出现在任何位置 通过 background position 属性 可以很轻松的控制背景图像在对象的背景区域中的起始显示位置 其语法格式为 background position xposypo

除了背景背景平铺外,CSS还提供了另一个强大的功能,即背景定位技术,能够精确控制背景在对象中的位置。

默认情况下,背景图像都是从元素 padding 区域的左上角开始出现的,但设计师往往希望背景能够出现在任何位置。通过 background-position属性,可以很轻松的控制背景图像在对象的背景区域中的起始显示位置。其语法格式为:


  1. background-position: xpos ypos | x% y% | x y

CSS1中,background-position属性需要 2 个参数值,第一个值用于横坐标,第二个值用于纵坐标,默认值为 0% 0%,即背景图像的左上角与对象背景区域的左上角对齐。如果只提供一个值,则用于 x 轴方向,y 轴方向使用默认值 center,即垂直居中。

上述语法格式表明,背景图像有 3 种定位方式:

1)xpos ypos:表示使用预定义关键字定位,水平方向可选关键字有 left | center | right,垂直方向可选关键字有 top | center | bottom。

关键字定位,应用的是对齐规则,而不是坐标规则。xpos 为 left 表示图像的左边与对象的左边对齐,为 right 表示图像的右边和对象的右边对齐;ypos 为 top 表示图像的顶部和对象的顶部对齐,为 bottom 表示图像的底部和对象的底部对齐;xpos、ypos等于 center表示图像在水平和垂直方向的中心,和对象在水平和垂直方向的中心对齐,即。

依然使用前面的背景图案 bg.gif,其尺寸为 100px * 100px,对象的尺寸为 200px * 200px,背景图像的位置使用预定义关键字定位。如:


  1. div {
  2. width: 200px;
  3. height: 200px;
  4. border: 1px dashed #ccc;
  5. background-repeat: no-repeat;
  6. background-position: center center;
  7. background-image: url(img/bg.gif);
  8. }

上述定位,就表示背景图像的中心,与背景区域的中心对齐,即背景图像位于对象的中央位置。运行结果如图 4‑28 所示:

背景图像关键字定位图4-28 背景图像关键字定位

2)x% y%:表示使用百分比定位,是将图像本身(x%, y%)的那个点,与背景区域的(x%, y%)的那个点重合。最终得到背景图像起始位置坐标的计算公式为:

x = (对象的宽度 – 图像的宽度) * x%;

y = (对象的高度 – 图像的高度) * y%;

还是上面的例子,改为百分比定位,要使背景图像居中,只需把背景图像的位置设置为50% 50% 即可。使用上面的公式,得到背景图像起始位置的坐标为:

x:(200px – 100px) * 50%  = 100px * 50% = 50px

y:(200px – 100px) * 50%  = 100px * 50% = 50px

得到的结果与上例相同,限于篇幅,就不再截图了。当然,百分比的值也可以是负值,计算公式依然不变。还是上面的例子,把百分比改为 -50% -50%。此时,得到背景图像起始位置的坐标为:

x:(200px – 100px) * (-50%) = 100px * (-50%) = -50px

y:(200px – 100px) * (-50%) = 100px * (-50%) = -50px

运行结果如图 4‑29 所示:

背景图像百分比定位图4-29 背景图像百分比定位

从上图可以看出,此时的背景图像只显示了原本图像的 1/4,这是因为背景图像的起始位置向左、向上移动后,只有1/4 的图案落到了背景区域。由于背景被设置为不重复,所以,就只显示了原本图像的 1/4。

3)x y:表示使用长度值定位,是将背景图像的左上角,放置在对象的背景区域中(x, y)所指定的位置,即 x, y 定义的是背景图像的左上角,相对于背景区域左上角的偏移量。

偏移量长度可以是正值,也可以是负值。x 为正值表示向右偏移,负值表示向左偏移;y 为正值表示向下偏移,负值表示向上偏移。背景图像发生移动后,就有可能超出对象的背景区域。此时,超出的部分将不会显示,只会显示落入背景区域的部分。

如果把上面的例子改为长度值定位,要使背景图像居中,只需把背景图像的位置设置为50px 50px 即可。它就表示背景图像的左上角顶点,相对于对象背景区域的左上角顶点在 x轴右移 50px,在 y 轴下移 50px。得到的结果依然是背景图像位于对象的中央。

在CSS3中,background-position属性支持 4 个参数值,前两个值用于横坐标,后两个值用于纵坐标。这意味着我们可以相对于上左下右任意一个角落定位,而不是之前只能相对于左上角定位。可以用长度值、或百分比来指定背景图像的起始位置。

如果只提供一个值,则第二个值为center。如果提供两个值,第一个长度或百分比表示水平偏移,第二个长度或百分比表示垂直偏移。长度或百分比,表示背景图像的左上角相对于背景位置区域左上角的偏移。如,下面几个声明给出了背景的起点相对于背景区域左上角的偏移:


  1. background-position: left 10px top 15px; /* 10px, 15px */
  2. background-position: left top ; /* 0px, 0px */
  3. background-position: 10px 15px; /* 10px, 15px */
  4. background-position: left 15px; /* 0px, 15px */
  5. background-position: 10px top ; /* 10px, 0px */
  6. background-position: left top 15px; /* 0px, 15px */
  7. background-position: left 10px top ; /* 10px, 0px */

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222808.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:58
下一篇 2026年3月17日 下午2:59


相关推荐

  • 51单片机和Arduino—闪烁灯实现

    51单片机和Arduino—闪烁灯实现

    2021年7月2日
    108
  • 单模光纤的传输距离比多模光纤的传输距离_单模多模单模光纤传感器

    单模光纤的传输距离比多模光纤的传输距离_单模多模单模光纤传感器1.1000Base-SX及1000Base-LX是什么意思?短波长光传输1000Base-SX、长波长光传输1000Base-LX多模光纤可以分为长波激光(称为1000BaseLX)和短波激光(称为1000BaseSX)。2.千兆位以太网标准问题:请问多模和单模光纤的极限传输距离是多少?标准光纤类型光纤直径(μm)最大传输距离1000base-sx多模62.5260m1000base-sx…

    2022年8月30日
    5
  • HashSet和TreeSet有什么区别?

    HashSet和TreeSet有什么区别?HashSet 不能保证元素的排列顺序 顺序有可能发生变化集合元素可以是 null 但只能放入一个 nullHashSet 底层是采用 HashMap 实现的 HashSet 底层是哈希表实现的 TreeSet Treeset 中的数据是排好序的 不允许放入 null 值 TreeSet 是通过 TreeMap 实现的 只不过 Set 用的只是 Map 的 key TreeSet 的底层实现是采用二叉树 红 黑树 的数据

    2026年3月18日
    2
  • nginx反向代理配置域名映射

    nginx反向代理配置域名映射nginx反向代理配置域名映射

    2022年4月23日
    50
  • splash 代码保留

    splash 代码保留packagecom demo demodo importandroi app Activity importandroi content Intent importandroi os Bundle importandroi os Handler publicclassS priva

    2026年3月17日
    2
  • 判别分析基础

    判别分析基础与聚类分析的比较判别分析是判别样品所属类型的一种统计方法 判别分析与聚类分析不同 判别分析是在已知研究对象分成若干类型 或组别 并已取得各种类型的一批已知样品的观测数据 在实际中判别分析和聚类分析往往联合起来用 当总体分类不清楚时 可先用聚类分析对原来的一批样品进行分类 然后再用判别分析建立判别式以对新样品进行判别 判别分析基本思想 样品和哪个总体距离最近 就判断它属于哪个总体 距离判别也

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号