CSS布局之Position(定位)

CSS重点属性之Position

position属性指定了元素的定位类型,它有5个值

  • static(默认)
  • relative
  • fixed
  • absolute
  • sticky

元素可以使用的top / bottom / left / right的属性进行定位。然而,这些属性无法正常工作,除非先设定position属性。他们也有不同的工作方式,这取决于定位方法。

static

HTML元素的默认值,没有定位,遵循正常的文档流对象。静态定位的元素不会收到top,bottom,left,right影响。

1
2
3
4
div.static {
position: static;
border: 3px solid #73AD21;
}

运行效果

fixed

元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动,这个类似于Android里面某个某个悬浮控件,屏幕滑动时该控件的位置也不变。

1
2
3
4
5
6
p.pos_fixed
{
position:fixed;
top:30px;
right:5px;
}

运行效果
可以滑动浏览器看看效果。

Fixed定位使元素的位置与文档流无关,因此不占据空间,Fixed定位的元素会与其它元素重叠。

relative

相对其正常位置的定位(正常文档流是从上到下从左到右)

1
2
3
4
5
6
7
8
9
10
h2.pos_left
{
position:relative;
left:-20px;
}
h2.pos_right
{
position:relative;
left:20px;
}

运行效果

absolute

绝对定位的元素位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于

1
2
3
4
5
6
h2
{
position:absolute;
left:100px;
top:150px;
}

运行效果

同fixed定位一样,absolute定位使元素的位置与文档流无关,因此不占据空间,和其它元素会有重叠。

sticky

基于用户的滚动位置来定位,粘性定位的元素是依赖于用户的滚动,在position:relative与position:fixed定位之间切换。它的行为就像position:relative;而当页面滚动超出目标区域时,它的表现就像position:fixed;它会固定在目标位置。固定的位置指的是top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

1
2
3
4
5
6
7
div.sticky {
position: -webkit-sticky; /* Safari */
position: sticky;
top: 0;
background-color: green;
border: 2px solid #4CAF50;
}

运行效果