css4种定位方式(静态定位,相对定位,绝对定位,固定定位)详解

说到定位就要用到 position 属性我们有四种不同的属性值
1.static
静态定位:使用静态定位时,元素处于普通流中,和未添加的元素一样处在最底层。
2.relative
相对定位:是相对于该元素在普通流时的位置
元素仍保持其未定位前的形状,它原本所占的空间仍保留
就拿这三个div做比喻(这里就不给css代码了)

 <div class="father">
        <div class="son1"></div>
        <div class="son2"></div>
        <div class="son3"></div>
    </div>

给son2(蓝色div)添加相对定位

  position: relative;

在这里插入图片描述
可以看到三个div还是和以前一样排列,我们给蓝色div继续添加top和left属性

 position: relative;
            top:50px;
            left: 50px;

在这里插入图片描述
可以看到蓝色div以原位置左顶点进行偏移。
众所周知定位有4个设置偏移量的属性,分别是:[left,right,top,bottom]
那我们来给蓝div添加一下

 position: relative;
            top:50px;
            left: 50px;
            right: 100px;
            bottom: 100px;

在这里插入图片描述
可以看到right和bottom没有任何效果
可是当我们在开发者模式中经left和right关闭
在这里插入图片描述
**此时right和bottom是有效的,所以这几个属性top和bottom,left和right不要同时出现,你要么左上,右下,不要上下一起来,上和左是优先于下和右的。
**
3.absolute
**绝对定位:**让元素脱离普通流,它会相对于顶级元素 body 定位。
还是那三个div,给蓝色div添加绝对定位

  position: absolute;

在这里插入图片描述
蓝块脱离了普通流,但红块未改变,独占一行,蓝块在原位置浮了起来,绿块因为蓝块浮了起来,向上补充了蓝块的位置,并且被蓝块覆盖。所以呈现了只有红蓝方块的效果

这个时候我们给蓝块添加left和top

  position: absolute;
            top: 50px;
            left: 50px;

效果:在这里插入图片描述
蓝块相对于body的左顶点进行偏移。
那么我们想要让蓝块相对于父元素定位要怎么办呢?
可以使用子绝父相的方法,我们给蓝块的父元素添加一个相对定位:

position: relative;

效果
在这里插入图片描述
此时的蓝块就相对于父元素进行偏移了

注意

若我们把父元素的相对定位去掉,给父元素套一个父元素,并设置相对定位:
我们看一下效果:
在这里插入图片描述
这也就是“有奶便是娘”
4.fixed
**固定定位:**固定定位与绝对定位类似,但它是相对于浏览器窗口定位,并且不会随着滚动条进行滚动。常用于网页右下角回到到顶部。

关于子绝父相定位

自绝父相不是去找最近的一个设置了相对定位的父级元素,如果父元素设置了绝对相位他也可以根据该父元素设置位置,(父元素设置绝对和相对都可以)

猜一猜

今天做了一道题做错了,分享给大家:
还是那三个div(红,蓝,绿),设置定位,绝·相·绝
大家猜一下最后会有什么效果?
**

具体代码如下:

//css部分
<style>
        #father {
            width: 300px;
            height: 300px;
            border: 1px solid red;
        }

        .son1 {
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
        }

        .son2 {
            width: 100px;
            height: 100px;
            background-color: blue;
            position: relative;
        }

        .son3 {
            width: 100px;
            height: 100px;
            background-color: green;
            position: absolute;
        }
    </style>
    //html部分
    <div id="father">
        <div class="son1"></div>
        <div class="son2"></div>
        <div class="son3"></div>
    </div>

思路:红块设置了绝对定位所以它脱离了标准流;那么后面的蓝块和绿块就会上来补它的空位,然后蓝块设置了相对定位,但他原本空间还是保留,所以后面绿块在进行绝对定位时就不会跑到上面而是在第二行浮动。
那么问题来了?
此时页面是上红下绿,还是上蓝下绿,这个今天我学到了,相对定位的图层级别高于绝对定位的级别。
所以效果如下:
在这里插入图片描述
呈现了蓝上绿下状态。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值