美文网首页
absolute 绝对定位 的理解

absolute 绝对定位 的理解

作者: 缘之空_bb11 | 来源:发表于2024-05-15 17:31 被阅读0次
WeChat93b0ab735a0c5f299483df5c3d9a0393.jpg

今天在做项目的时候发现这种情况:
正常情况下应该是:

WeChat3ea3ca5b88b115791d03691836797730.jpg

发现了没, 数量加减的控件偏移了,我去,什么情况.
后来排查发现,是因为设置其加减控件的absolute的参照物出现了问题,刚好我们在了解下 absolute

absolute 绝对定位

注意: 如果文档可滚动,绝对定位元素会随着它滚动,因为元素最终会相对于正常流的某一部分定位

  1. 绝对定位最重要的一点是,它可以通过边偏移移动位置,但是它完全脱标,【完全不占位置】。
  2. 可是它具体的位置父类参考物确是相对的.并且有以下规定:

父级没有定位

若所有父元素都没有定位,以浏览器当前屏幕为准对齐(document文档)。

子绝父相 < 非常非常重要 >

这句话的意思是 子级是绝对定位的话, 父级要用相对定位。
因为子级是绝对定位,不会占有位置, 可以放到父盒子里面的任何一个地方。
父盒子布局时,需要占有位置,因此父亲只能是 相对定位.
这就是子绝父相的由来。

绝对定位的盒子水平/垂直居中 < 相当重要 >

普通的盒子是左右margin 改为 auto就可, 但是对于绝对定位就无效了
定位的盒子也可以水平或者垂直居中,有一个算法。

  1. 首先left 50% 父盒子的一半大小
  2. 然后走自己外边距负的一半值就可以了

怎么理解上面的,我们做个实验:

<view class="box red">紫红色
       <view class="box1  pink">粉色
           <view class="box2 blue">蓝色
           </view>
       </view>
   </view>
   
   
   .box {
       height: 600rpx;
       width: 600rpx;
       background: rosybrown;
   }

   .box1 {
       width: 500rpx;
       height: 500rpx;     
       background-color: blanchedalmond;
   }

   .box2 {
       width: 200rpx;
       background-color: skyblue; 
   }

三个颜色嵌套, 紫色包含粉色,粉色包含蓝色,如图:

WechatIMG314.jpg

我们将蓝色作为一个 absolute[绝对定位]来测试:

  1. 验证父级没有定位, 以浏览器当前屏幕为准对齐(document文档)。
.box {
        height: 600rpx;
        width: 600rpx;
        background: rosybrown;
    }

    .box1 {
        width: 500rpx;
        height: 500rpx;     
        background-color: blanchedalmond;
    }

    .box2 {
        width: 200rpx;
        background-color: skyblue; 
        /* 定位 */
        position: absolute;
        right: 0;
        bottom: 0;
    }

结果图片:


WechatIMG315.jpg
  1. 验证 子绝父相
  • 将其父类box1(粉色)设置为相对定位,作为参考物
   .box {
       height: 600rpx;
       width: 600rpx;
       background: rosybrown;
   }

   .box1 {
       width: 500rpx;
       height: 500rpx;     
       background-color: blanchedalmond;
       position: relative;
   }

   .box2 {
       width: 200rpx;
       background-color: skyblue; 
       /* 定位 */
       position: absolute;
       right: 0;
       bottom: 0;
   }
WechatIMG316.jpg
  • 将其父类box(紫红色)设置为相对定位,作为参考物
  .box {
        height: 600rpx;
        width: 600rpx;
        background: rosybrown;
        position: relative;
    }

    .box1 {
        width: 500rpx;
        height: 500rpx;     
        background-color: blanchedalmond;
    }

    .box2 {
        width: 200rpx;
        background-color: skyblue; 
        /* 定位 */
        position: absolute;
        right: 0;
        bottom: 0;
    }
WechatIMG318.jpg
  1. 验证 当父类有多个已定位的,将采取就近原则;
  • 若 box1(粉色) 和 box2(蓝色) 都设置为 绝对定位, 那么蓝色的位置会在什么地方
    .box {
        height: 600rpx;
        width: 600rpx;
        background: rosybrown;
        position: relative;
    }

    .box1 {
        width: 500rpx;
        height: 500rpx;     
        background-color: blanchedalmond;
        /* 定位 */
        position: absolute;
        left: 0;
        top: 0;
    }

    .box2 {
        width: 200rpx;
        background-color: skyblue; 
        /* 定位 */
        position: absolute;
        right: 0;
        bottom: 0;
    }
WechatIMG321.jpg
  • 若 box(紫红色) 和 box1(粉色) 都设置为 相对定位 , 那么蓝色的位置会在什么地方
    .box {
        height: 600rpx;
        width: 600rpx;
        background: rosybrown;
        position: relative;
    }

    .box1 {
        width: 500rpx;
        height: 500rpx;     
        background-color: blanchedalmond;
        position: relative;
    }

    .box2 {
        width: 200rpx;
        background-color: skyblue; 
        /* 定位 */
        position: absolute;
        right: 0;
        bottom: 0;
    }
WechatIMG319.jpg

验证了绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于窗口为定位

  1. 验证 绝对定位的盒子水平/垂直居中的设置
.box {
        height: 600rpx;
        width: 600rpx;
        background: rosybrown;
        position: relative;
    }

    .box1 {
        width: 500rpx;
        height: 500rpx;     
        background-color: blanchedalmond;
    }

    .box2 {
        width: 200rpx;
        background-color: skyblue; 
        /* 定位 */
        position: absolute;
        left: 50%;
        bottom: 0;
        transform: translate(-50%, 0);
    }
WechatIMG320.jpg

相关文章

  • 遮罩效果--首页公告

    position:absolute;绝对定位 position:absolute;(表示绝对定位),这条语句的作用...

  • css div 重叠

    position: absolute;用绝对定位。

  • 绝对定位absolute

    absolute包裹性float是个带有方位的display:inline-block属性,absolute也是个...

  • css第五节

    position定位 absolute:绝对定位 static:自动定位 relative:相对定位 fixed:...

  • day06

    1定位 相对定位relation 绝对定位absolute 相对定位就是元素在页面上的正常位置 2绝对定位 绝对定...

  • 绝对定位与相对定位的比较

    一:绝对定位 position: absolute; 绝对定位:绝对定位是相对于元素最近的已定位的祖先元素(即设置...

  • position 有4种,分别对应效果和用法

    1:relative相对定位,经常配合absolute来实现垂直居中; 2:absolute 绝对定位(脱离文档流...

  • HTML

    定位 属性:position 取值:relatire 相对定位 absolute 绝对定位 fi...

  • 20.css 绝对定位

    当position设置为absolute时,则开启绝对定位 绝对定位: 开启绝对定位,会使元素脱离文档流 开启绝对...

  • 绝对定位、相对定位与固定定位

    绝对定位如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的...

网友评论

      本文标题:absolute 绝对定位 的理解

      本文链接:https://www.haomeiwen.com/subject/udzvfjtx.html