【CSS】Position 定位

一个完整的页面是由很多个页面堆积形成的,如下图所示。

那么如何实现页面的堆积,就需要CSSposition定位属性了。

position 属性指定了元素的定位类型,共有五个值,分别是

点击上述五个值可直接跳转到菜鸟教程CSS Position (定位)篇章。

这里,我只重点说 absolute、fixed、relative 三个值。

1.absolute

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

absolute 定位使元素的位置与文档流无关,因此不占据空间

absolute 定位的元素和其他元素重叠

2. fixed

fixed元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动

fixed 定位使元素的位置与文档流无关,因此不占据空间

fixed 定位的元素和其他元素重叠

我们可以发现 fixed 与 absolute 只是 第一条 不同。

3.relative

relative相对定位元素的定位是相对其正常位置

移动相对定位元素,但它原本所占的空间不会改变

相对定位元素经常被用来作为绝对定位元素容器块

4.sticky

参看实例:http://www.runoob.com/try/try.php?filename=trycss_position_sticky 就会一清二楚。

5.static

HTML 元素的默认值,即没有定位,遵循正常的文档流对象

静态定位的元素不会受到 top, bottom, left, right 影响

其他四个值则都受  top, bottom, left, right 影响。

 

实战

我单独写了页面来展示position的 absolute、fixed、relative 三个值,注释写的也很清晰,大家细细看吧,我就不啰嗦了。

vue框架下的完整代码如下所示:

<template>
  <div class="relative1">
    <div class="absolute1"><h4>absolute: 第二层</h4></div>
    <div class="absolute2"><h4>absolute: 第三层</h4></div>
    <div class="fixed1"><h4>fixed:第四层</h4></div>
    <h4>relative: 第一层</h4>
    <div class="relative2">
      <div class="absolute3"><h4>absolute:第六层</h4></div>
      <div class="fixed2">
        <el-row><h4>fixed:第七层</h4></el-row>
        <el-row>
          <el-button type="text" style="color:#ffffff;float: right;padding-right: 20px" @click="goBack"><h1>GoBack</h1></el-button>
        </el-row>
      </div>
      <h4>relative:第五层</h4>
    </div>
    <h4>relative: 第一层( 该文字被遮挡,按照文档流位置是在 class="relative2" 的区域块下面 )</h4>
  </div>
</template>
 
<script>
export default {
  name: 'position',
  methods: {
    goBack () {
      this.$router.go(-1)
    }
  }
}
</script>
 
<style scoped>
  /* relative 相对定位元素的定位是相对其正常位置。
   移动相对定位元素,但它原本所占的空间不会改变。
   相对定位元素经常被用来作为绝对定位元素的容器块。*/
  /* 父元素为<html> */
  .relative1{
    position: relative;
    width: 800px;
    height: 500px;
    background-color: #76c7f4;
    margin: 100px auto;
  }
  /* absolute 绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>。
   absolute 定位使元素的位置与文档流无关,因此不占据空间。
   absolute 定位的元素和其他元素重叠。*/
  /* 父元素为<div class="relative1"> */
  .absolute1{
    position: absolute;
    width: 900px;
    height: 200px;
    background: #7fffd4;
    top: 50px;
  }
  /* 父元素为<div class="relative1"> */
  .absolute2{
    position: absolute;
    width: 1000px;
    height: 200px;
    background: #cbbaff;
    top: 250px;
  }
  /* fixed 元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动。
     fixed 定位使元素的位置与文档流无关,因此不占据空间。
     fixed 定位的元素和其他元素重叠。*/
  .fixed1{
    position:fixed;
    width: 800px;
    height: 200px;
    background: #ff2c2c;
    top:250px;
  }
  /* 父元素为<div class="relative1"> */
  .relative2{
    position: relative;
    width: 400px;
    height: 250px;
    background: #ffffff;
    margin: auto;
  }
  /* 父元素为<div class="relative2"> */
  .absolute3{
    position:absolute;
    width: 450px;
    height: 70px;
    background: #fcff2e;
    top:125px
  }
  .fixed2{
    position:fixed;
    top:125px;
    width: 200px;
    height: 150px;
    background: #ff38d4;
  }
  h4{
    padding-right: 20px;
    float: right
  }
</style>

效果如下图所示:

注:1. 第二、三、四层会始终覆盖在第一层的两部分文字的上方;2. 在HTML文档中,如果第二、三、四层写在第五、六、七层的前面,则如上图所示,位于第五、六、七层的下方;否则,第二、三、四层将覆盖在第五、六、七层的上方。

总结

1. Position 属性的五个值:absolute、fixed、relative、static、sticky。

2. absolute

  • absolute 绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>
  • absolute 定位使元素的位置与文档流无关,因此不占据空间
  • absolute 定位的元素和其他元素重叠

3. fixed

  • fixed 元素的位置相对于浏览器窗口是固定位置即使窗口是滚动的它也不会移动
  • fixed 定位使元素的位置与文档流无关,因此不占据空间
  • fixed 定位的元素和其他元素重叠

    我们可以发现 fixed 与 absolute 只是 第一条 不同。

4. relative

  • relative 相对定位元素的定位是相对其正常位置
  • 移动相对定位元素,但它原本所占的空间不会改变
  • 相对定位元素经常被用来作为绝对定位元素的容器块

5. static

  • HTML 元素的默认值,即没有定位,遵循正常的文档流对象
  • 静态定位的元素不会受到 top, bottom, left, right 影响。其他四个值则都会受  top, bottom, left, right 影响。
  • 静态定位的元素会受到 margin, padding 影响

6. sticky

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

END

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值