CSS中的position属性

1、position 属性

position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法,共有4个属性值,分别是 static、fixed、relative、absolute、sticky

1.1、static 属性值(默认定位,占据空间)

static定位是 HTML 元素的默认值,即没有定位,元素出现在正常的流中。你如果设置了 position 为 static 或者没有设置 position 属性,则该元素就是 static 定位,这种定位就不会受到top,bottom,、left、right的影响,仅仅只是正常出现在流中。

1.2、固定定位 fixed(不在文档流内)

使用 fixed 定位的元素的位置相对于浏览器窗口是固定的,即使窗口是滚动的它也不会滚动,定义了 fixed 定位的元素所设置的 top 或者left 等属性是相对于浏览器的窗口的。fixed 定位使元素的位置与文档流无关,因此不占据空间,它会和其他元素发生重叠。

下面绿色的元素使用的是 fixed 定位,top为0px、right为0px,固定在窗口的右上边,刚好贴着窗口。不在文档流内,不会占据空间,其他元素能挤在它的下面。 

top为10px、right为10px,固定在窗口的右上边,距离窗口10像素的距离 

1.3、绝对定位 absolute(不在文档流内)

绝对定位 absolute 的元素是相对于 static 定位以外的第一个父元素进行定位,如果元素没有已定位的父元素,那么它的位置相对于整个窗口。且 absolute 定位的元素与文档流无关,不占据空间,其他元素能挤在它的下面而发生重叠。

下面对最里面的元素使用了绝对定位,但是它的父元素使用的定位是 static,其他更上层的父元素都是默认定位,此时absolute定位的元素是相对于窗口进行定位的。

<div class="aaa">
    <div class="bbb" style="position: static; background-color: #70e3b5; height: 50px">
      <h2 class="ccc">这里是absolute定位元素</h2>
    </div>
</div>
.ccc{
  position: absolute;
  top: 0px;
  right: 0px;
  color: #2b4d4d;
}

跑到了整个窗口的最右上边

给父元素 bbb 定义一个相对定位 relative,此时absolute 定义相对于定义了 relative 定位的父元素进行定位

 如果是给父元素 ccc 定义relative定位,而 bbb 是默认定位的话,可以看到,此时 absolute 定义的元素是相对于 ccc 父元素进行定位的。所以 absolute 的元素是相对于 static 定位以外的第一个父元素进行定位

1.4、相对定位 relative(在文档流内,占据空间)

生成相对定位的元素,相对于其本身的正常位置进行定位。使用了相对定位的元素的原本所占的空间不会被挤压。当然,如果你设置的偏移太大,该元素有可能会跑到其他元素的上面而发生重叠

 1.5、粘性定位 sticky(当在top值大于与窗口距离时切换为固定定位)

粘性定位,有一些非常奇怪的行为表现。

如果没有其他标签包裹该标签,即放在body标签内,假如设置了 top 属性,当 top 的值大于该标签到浏览器窗口的上边距离时才有效果,或者浏览器滚动使得该标签与浏览器窗口的距离小于 top 值时才有效果,此时相当于是固定定位 fixed。

如果有其他标签包裹该标签,比如你把一个粘性定位的元素放在一个div标签里,此时也是当 top 的值大于该标签到浏览器窗口的上边距离时才有效果,此时他是固定定位,但是他出现的范围只限于在他的父元素之内。

需注意:

(1)元素光设置该属性并不会让元素起任何变化,必须至少指定 top, right, bottom 或 left 四个属性值其中之一才生效。

(2)设定为 position:sticky 元素的任意父节点的 overflow 属性都必须是 visible(默认值),否则 position:sticky 不会生效。

详细参考:https://www.cnblogs.com/moqiutao/p/7341671.html

2、z-index属性(设置元素的堆叠顺序)

z-index 只能在 position 属性值为 relative、absolute、fixed 的元素上有效。当元素使用了一些定位而发生重叠时,可以使用 z-index 属性指定哪个元素在上面,哪个在下面。

元素可以有正数或负数的堆叠顺序,具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面,没有指定z - index,最后定位在HTML代码中的元素将被显示在最前面。

详细可参考:https://www.cnblogs.com/zhuzhenwei918/p/6112034.html

posted @ 2019-03-07 12:47  wenxuehai  阅读(434)  评论(0编辑  收藏  举报
//右下角添加目录