background-position

在CSS中background-position属性允许您在其容器内移动背景图片(或渐变)。

html {
  background-position: 100px 5px; 
}

它有三种不同类型的值:

  • 长度值(例如 100px 5px)
  • 百分比(例如 100% 5%)
  • 关键字(例如 top right)

默认值是0 0。它会将背景图片置于容器左上角。

长度值非常简单:第一个值是水平位置,第二只是垂直位置。所以100px 5px 将向右100px向下5像素移动图片。你可以在px、em或者任何其他CSS长度值中设置长度值。

百分比的工作方式略有不同。开动你的数学脑筋:将背景图片移动X%表示它会将图像中的X%点与容器中的X%点对齐。例如,50%表示它将图片的中点与容器的中点对齐。100%意味着它会将图片的最后一个像素与容器的最后一个像素对齐,以此类推。

关键字只是百分比的捷径。top right比100% 0更加容易去记忆和书写,这就是为什么关键字和百分比是一回事的原因。以下是所有五个关键字和它们等价值的清单:

  • top: 0% 垂直方向
  • right: 100% 水平方向
  • bottom: 100% 垂直方向
  • left: 0% 水平方向
  • center:50% 水平方向 如果水平方向距离未定义。 如果水平方向已经定义,那么就应用于垂直方向。

值得注意的是,关键字的使用顺序无关紧要:top center 与 center top 相同。但是仅仅在完全使用关键字的情况下可以这么做。center 10% 与10% center并不相同。

示例

这个演示展示了具有长度单位,百分比以及关键字的background-position设置示例。

<div id="pixels">
  <p><code>background-position: 350px 0;</code></p>
</div>

<div id="percentages">
  <p><code>background-position: 100% 0;</code></p>
</div>

<div id="keywords">
  <p><code>background-position: top right;</code></p>
</div>

  

        div {
            width: 400px;
            height: 200px;
            border: 5px solid rgba(255, 0, 0, 0.3);
            margin-bottom: .5em;
            background: url(./images/codepen.png);
            background-repeat: no-repeat;
        }


        #pixels {
            background-position: 350px 0;
        }

        #percentages {
            background-position: 100% 0;
        }

        #keywords {
            background-position: top right;
        }

        p {
            font-family: monospace;
            margin-top: 50px;
            padding: 0 1em;
        }

  

声明值

在现代浏览器(有关细则请参阅浏览器支持表)中你可以为background-position提供四个值。

如果你声明一个值,那个值是水平偏移量。浏览器将垂直偏移量设置为居中。

当声明两个值时,第一个值时水平偏移量,第二个值时垂直偏移量。

当你使用三个或四个值时,事件变的有些棘手,但你也可以更好的控制背景位置。

三个或四个值语法在关键字和长度或百分比单位之间交替。你可以使用除了center之外的任何关键字值在三个值或四个值的background-position声明中。

当你指定三个值,浏览器将“缺失”的第四个值当做0进行解释。下面是一个三值background-position的例子:

#threevalues {
  background-position: right 45px bottom;
}

  

这将背景图片在容器中距离右侧定位45px、距离底部定位0px。

下面是一个四值background-position例子:

#fourvalues {
  background-position: right 45px bottom 20px;
}

  

这将背景图片在容器中距右侧定位45px,距底部定位20px。

注意上面示例中值的顺序:关键字后面跟长度单位。一个三值或四值的background-position必须遵循该格式,并且关键字在长度或百分比单位之前。

演示

该演示包括一个值,两个值,三个值和四个值background-position的示例:

<div id="onevalue">
  <p><code>background-position: 10px;</code></p>
</div>

<div id="twovalues">
  <p><code>background-position: 10px 35px;</code></p>
</div>

<div id="threevalues">
  <p><code>background-position: right 45px bottom;</code></p>
</div>

<div id="fourvalues">
  <p><code>background-position: right 45px bottom 20px;</code></p>
</div>

  

div {
  width: 400px;
  height: 200px;
  border: 5px solid #E18728;
  margin-bottom: .5em;
  background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/652/codepen.png); 
  background-repeat: no-repeat;
}

#onevalue { background-position: 10px; }

#twovalues { background-position: 10px 35px; }

#threevalues { background-position: right 45px bottom; } 

#fourvalues { background-position: right 45px bottom 20px; }

/* styling for Pen, unrelated to background-position */
p { 
  margin-top: 10px;
  padding: 0 1em;
}

  

原文链接:

https://css-tricks.com/almanac/properties/b/background-position/

posted @ 2019-08-22 15:59  请叫我二狗哥  阅读(215)  评论(0编辑  收藏  举报