前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS背景定位属性——background-position

CSS背景定位属性——background-position

作者头像
治电小白菜
发布2022-07-08 08:01:44
1.6K0
发布2022-07-08 08:01:44
举报
文章被收录于专栏:技术综合技术综合

很多小伙伴看到这个标题估计看都不想看,background-position这属性有啥可讲的嘛,都用过无数遍了,只不过我们大多数情况下都是用的简写方式background,比如这样:

代码语言:javascript
复制
.box{
    background: url('../images/bg.jpg') no-repeat center;
}

最后的那个center其实就是background-position值,就是告诉浏览器我这个背景图片要定位在元素box的中间位置。

看起来确实很简单,没什么可讲的,但是你真的对它所有用法都了如指掌吗?

一、关键字(top、bottom、left、right、center)

1. 两个值

background-position可以取两个值,一个为横轴方向,一个为纵轴方向。

比如你想要把背景图定位在右下角,只需这样写:

代码语言:javascript
复制
background-position: right bottom;

So easy! 当然你也阔以把顺序反过来,丝毫没影响!

代码语言:javascript
复制
background-position: bottom right;

但是需要注意的是,仅仅在两个值都为关键字时才无关其顺序,因为根据关键字浏览器就能自动识别它是横轴方向还是纵轴方向。

要是你像下面这么写,那就挂了……

代码语言:javascript
复制
background-position: bottom 0;

2. 单个值

background-position取单个值时,另一个值默认设为center。例如:

代码语言:javascript
复制
background-position: top;

相当于:

代码语言:javascript
复制
background-position: top center;
/* 或者 */
background-position: center top;

3. 偏移值

上面这些貌似挺好用,但是却还不够灵活,包括下面即将讲到的长度值和百分值也同样不够灵活(都是相对左侧或顶部定位),如果我想要距离右侧和底部定位且还需有一定距离该怎么办呢?

其实也很简单,在关键字后再加个具体距离值即可,这个值可以是下面要讲到的长度值或百分数值,例如:

代码语言:javascript
复制
background-position: bottom 10px right 10%;
/*背景图底部距离盒子底部10px,参考点距离盒子右侧10%,参考点下面会讲到*/
background-position: bottom 10px right;
/*偏移值也可以省略,省略其实就相当于0px*/

需要注意的是关键字center无法设置偏移值,例如下面的写法是错误的。

代码语言:javascript
复制
background-position: center 10% top;  /*错误写法*/

二、长度值

这个好理解,就是那些数字后面带单位的具体值,比如:10px1em等等。

1. 两个值

此时取值就不像关键字用法这么灵活了,它必须严格按照第一个值为距左边的长度值,第二个值为距顶边的长度值,顺序不能颠倒,因为你又没标明方向,我(浏览器)怎么知道?

例如,你想要让背景图定位在距左边10px、距顶边20px的位置,就可以这么写:

代码语言:javascript
复制
background-position: 10px 20px;

2. 单个值

这个其实跟上面讲关键字时的单个取值基本是一样的,都是将第二个值默认设置为center,唯一区别就是这个center只能放在这个长度值后面,也就是在纵轴方向居中。例如:

代码语言:javascript
复制
background-position: 10px;

相当于:

代码语言:javascript
复制
background-position: 10px center;
/* 横轴方向距离元素左侧10px,纵轴方向居中 */

三、百分数值

这个跟上面的长度值用法很像,只不过百分数值是个相对于盒子宽高的百分数,还有就是不仅只是在相对于盒子上有个百分比,在背景图本身也有个百分比。

举个简单例子:

代码语言:javascript
复制
background-position: 10% 50%;

这个是什么意思呢?背景图左侧距离盒子左侧的距离是盒子宽度的10%?背景图顶部距离盒子顶部距离是盒子高度的50%?

错!都错了!!!

如果是长度值的话,那么背景图是拿其左上角来相对盒子的左上角进行定位,但百分数值不是,它是拿其自身的(10%,50%)这个位置的点来相对盒子的左上角进行定位,上面这个例子的效果其实和下面这个效果是一样的。

代码语言:javascript
复制
background-position: 10% center;

如果还不好理解,再看下面这个示意图你就明白了。

background-position: 10% 50%

这是一个100px*100px的盒子,里面有张50px*50px的背景图,这个背景图就设置background-position: 10% 50%这个样式。然后你会发现,背景图左侧距盒子左侧距离为5px,而不是100*10%=10px,因为此时的定位参考系并不是图片的左侧。同样的,纵轴方向是垂直居中的,也不是100*50%=50px。此时的定位参考点是图片中(5px,25px)的这个点,而不是图片的左上角,这个点的位置是根据图片的宽高来计算的。

代码语言:javascript
复制
50 * 10% = 5px;
50 * 50% = 25px;

四、混合用法

以上三种背景定位属性值可以混合使用,例如:

代码语言:javascript
复制
background-position: 10px center;
background-position: 10px 10%;
background-position: right 10px bottom;
background-position: right 10% bottom 10px;

重点总结

background-position可以设置关键字,包括top、bottom、left、right、center,还可以在关键字后设置相应的偏移量(center除外) ② background-position可以设置长度值和百分数值,长度值的定位参考点是在图片左上角,而百分数值不是

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、关键字(top、bottom、left、right、center)
    • 1. 两个值
      • 2. 单个值
        • 3. 偏移值
        • 二、长度值
          • 1. 两个值
            • 2. 单个值
            • 三、百分数值
            • 四、混合用法
            • 重点总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档