position

CSS:position

position拥有三种定位机制:静态定位、相对定位、绝对定位

position属性可设置4个属性值:

static(静态定位)

relative(相对定位)

absolute(绝对定位)

fixed(固定定位)

为什么会有四个呢?因为absolute和fixed都属于绝对定位

下面这个表格是w3cschool对position的解释

属性值描述
static默认值。没有定位,元素出现在正常的流中。(忽略top、left、bottom、right、z-index声明)
relative生成相对定位的元素,相对于其正常位置进行定位。left:20会向元素的LEFT位置添加20像素。
absolute生成绝对定位的元素,相对于static定位以外的第一个父元素进行定位。
元素的位置通过left,top,right,bottom属性进行定位。
fixed生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过left,top,right,bottom属性进行定位。
inherit从父元素继承position属性的值。



























相对定位

特点:

  • 相对于自身原有位置进行偏移
  • 仍处于标准文档流中
  • 随机拥有偏移属性和z-index属性

绝对定位

特点:

  • 建立了以包含快为基准的定位
  • 完全脱离了标准文档流
  • 随机拥有偏移属性和z-index属性

1、没有设置偏移量:无论是否存在已定位祖先元素,都保持在元素初始位置。脱离了标准文档流。

  • 没有已定位祖先元素
  • .box1{
    	background-color:red;
    	height:300px;
    }
    .box2{
    	background-color:green;
    	height:100px;
    	position:absolute;
    }
    .box3{
    	background-color:blue;
    	height:200px;
    }
    <div class="box1">box1</div>
    <div class="box2">box2</div>
    <div class="box3">box3</div>

  • 有已定位祖先元素
    • .box1{
      	background-color:red;
      	height:300px;
      }
      .box2{
      	background-color:green;
      	height:100px;
      	position:absolute;
      }
      .box3{
      	background-color:blue;
      	height:200px;
      }
      .box{
      	position:relative;
      	height:60px;
      	background-color:#FC0;
      }
      <div class="box1">box1</div>
      <div class="box">
        <div class="box2">box2</div>
      </div>
      <div class="box3">box3</div>
  • 这两种情况结果相同。无论是否存在已定位祖先元素,都保持在元素初始位置。

2、设置了偏移量

偏移参照基准:

  • 若无已定位祖先元素,以<html>为偏移参照基准。
  • .box1{
    	background-color:red;
    	height:300px;
    }
    .box2{
    	background-color:green;
    	height:100px;
    	position:absolute;
    	top:20px;
    	left:50px;
    }
    .box3{
    	background-color:blue;
    	height:200px;
    }
    .box{
    	height:60px;
    	background-color:#FC0;
    }
    <div class="box1">box1</div>
    <div class="box">
      <div class="box2">box2</div>
    </div>
    <div class="box3">box3</div>


  • 有已定位祖先元素,以距其最近的已定位祖先元素为偏移参照基准
  • .box1{
    	background-color:red;
    	height:300px;
    }
    .box2{
    	background-color:green;
    	height:100px;
    	position:absolute;
    	top:20px;
    	left:50px;
    }
    .box3{
    	background-color:blue;
    	height:200px;
    }
    .box{
    	height:60px;
    	background-color:#FC0;
    	position:relative;
    }
    .wrap{
    	height:400px;
    	background-color:#999;
    	position:absolute;
    	width:80%;
    }
    
    <div class="wrap">
      <div class="box1">box1</div>
      <div class="box">
        <div class="box2">box2</div>
      </div>
      <div class="box3">box3</div>
    </div>
3、absolute与fixed的相同点
  • 完全脱离了标准文档流—兄弟元素不再受其影响
  • 以父包含块为基准定位—初始位置在父包含块的左上角

      absolute与fixed的不通点

  • 偏移参照基准 :absolute无已定位祖先元素,以<html>为 偏移参照基准。有已定位祖先元素,以距其最近的已定位祖先元素为偏移参照基准
  • 偏移参照基准 :fixed有、无已定位祖先元素,均以浏览器可视窗口为偏移参照基准。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值