position定位

CSS position 属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。

position 属性的值:
1.static(默认值):元素按照正常的文档流进行定位,此时 top, right, bottom, left 和z-index 属性无效。
2.relative(相对定位):元素相对于其正常位置进行定位,即相对于它在文档流中的原始位置,元素并不脱离文档流,因此元素原本的位置会被保留,其他的元素位置不会受到影响。

    <div class="relativeBox">
        <div class="normalBox">
            <div class="box">
                没设置relative定位
            </div>

            <p>注意:由于.box设置了相对定位并移动了位置,但它仍然保留了原位置的空间。</p>
        </div>
        <div class="container">
            <div class="box">
                relative定位元素,相对于其容器进行移动。
            </div>

            <p>注意:由于.box设置了相对定位并移动了位置,但它仍然保留了原位置的空间。</p>
        </div>
    </div>
  <style>
      .relativeBox {
        width: 1000px;
        height: 220px;
        display: flex;
        justify-content: space-around;

        .normalBox {
            width: 300px;
            height: 200px;
            border: 1px solid red;

            .box {
                width: 200px;
                height: 100px;
                background-color: lightblue;
            }
        }

        .container {
            width: 300px;
            height: 200px;
            border: 1px solid black;

            .box {
                width: 200px;
                height: 100px;
                background-color: lightblue;
                position: relative;
                top: 20px;
                left: 30px;
            }
        }


    }
  </style>

如图所示:
在这里插入图片描述
3.absolute(绝对定位): 当你为HTML元素设置position:absolute;时,这个元素会脱离正常的文档流,并相对于其最近的已定位祖先元素(即position属性不是static的祖先元素)进行定位。“已定位的祖先元素”是指那些position属性被设置为relative、absolute、fixed或sticky的元素。如果绝对定位元素没有这样的祖先元素,那么它就会相对于整个文档的初始包含块(通常是浏览器窗口)进行定位。

    <hr style="margin-top: 200px;">
    <div style="margin-top: 30px;">
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            3.absolute(绝对定位):当你为HTML元素设置position:absolute;时,这个元素会脱离正常的文档流,
            并相对于其最近的已定位祖先元素(即position属性不是static的祖先元素)进行定位。
            “已定位的祖先元素”是指那些position属性被设置为relative、absolute、fixed或sticky的元素。
            如果绝对定位元素没有这样的祖先元素,那么它就会相对于整个文档的初始包含块(通常是浏览器窗口)进行定位。
        </p>
    </div>
    <div class="absoluteBox">
        <div class="normalBox">
            <div class="box">
                没设置定位
            </div>
            <p>检查其是否脱离文档流</p>
        </div>

        <div class="containera">
            <div class="box">
                absolute定位元素,相对于其最近的已定位祖先元素进行定位。
            </div>
            <p>检查其是否脱离文档流</p>
        </div>

        <div class="containerb">
            <div class="box">
                absolute定位元素,没有祖先元素,相对于整个文档的初始包含块(浏览器窗口)进行定位,它的位置会随着页面的滚动而滚动。
            </div>
            <p>检查其是否脱离文档流</p>
        </div>

    </div>
  <style>
      .absoluteBox {
        width: 1000px;
        height: 220px;
        display: flex;
        justify-content: space-around;

        .normalBox {
            width: 300px;
            height: 200px;
            border: 1px solid red;

            .box {
                width: 200px;
                height: 100px;
                background-color: lightblue;
            }
        }

        .containera {
            width: 300px;
            height: 200px;
            border: 1px solid black;
            position: relative;

            .box {
                width: 200px;
                height: 100px;
                background-color: lightblue;
                position: absolute;
                top: 20px;
                left: 30px;
            }
        }

        .containerb {
            width: 300px;
            height: 200px;
            border: 1px solid black;

            .box {
                width: 200px;
                height: 100px;
                background-color: lightblue;
                position: absolute;
                top: 20px;
                left: 30px;
            }
        }
    }
  </style>

如图所示:
在这里插入图片描述
4.fixed: 元素相对于浏览器窗口进行定位,即使页面滚动,它也会停留在同一的位置。

    <hr>
    <div style="margin-top: 30px;">
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            4.fixed:元素相对于浏览器窗口进行定位,即使页面滚动,它也会停留在同一的位置。
        </p>
    </div>
    <div class="fixedBox">
        <div class="normalBox">
            <div class="box">
                没设置定位
            </div>
            <p>检查其是否脱离文档流</p>
        </div>

        <div class="container">
            <div class="box">
                fixed定位元素,相对于浏览器窗口进行定位(它的位置不会随着页面的滚动而滚动)
            </div>
            <p>检查其是否脱离文档流</p>
        </div>

    </div>
  <style>
   .fixedBox {
        width: 1000px;
        height: 1000px;
        display: flex;
        justify-content: space-around;

        .normalBox {
            width: 300px;
            height: 200px;
            border: 1px solid red;

            .box {
                width: 200px;
                height: 100px;
                background-color: lightblue;
            }
        }

        .container {
            width: 300px;
            height: 200px;
            border: 1px solid black;

            .box {
                width: 200px;
                height: 100px;
                background-color: lightblue;
                position: fixed;
                top: 50%;
                left: 50%;
            }
        }
    }

  </style>

如下所示:

定位

5.sticky: 这是相对于用户的滚动位置来定位的元素。一个sticky元素在用户滚动超过其滚动阈值之前为相对定位,之后为固定定位。 把sticky元素想象成一个“粘性”便签,它最初会跟着页面内容一起滚动。但是,当你滚动页面到达某个特定位置(通常是元素的初始位置)时,这个便签就会“粘”在那个位置,不再随着页面滚动而移动,直到你滚动回足够远的位置,它才会重新变得可以滚动。
举个例子,假设你有一个搜索框或者是分类导航,当页面滚动时,你希望这个内容在滚动到一定位置后固定在视窗的某个地方。你可以给这个内容设置position:sticky;,并指定一个top值。这样,当页面滚动到设置的top位置时,内容就会“粘”在那里,不再滚动。

    <hr>
    <div style="margin-top: 30px;">
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            5.sticky:这是相对于用户的滚动位置来定位的元素。基本上,一个sticky元素在用户滚动超过其滚动阈值之前为相对定位,之后为固定定位。
            你可以把sticky元素想象成一个“粘性”便签,它最初会跟着页面内容一起滚动。但是,当你滚动页面到达某个特定位置(通常是元素的初始位置)时,
            这个便签就会“粘”在那个位置,不再随着页面滚动而移动,直到你滚动回足够远的位置,它才会重新变得可以滚动。
            举个例子,假设你有一个搜索框或者是分类导航,当页面滚动时,
            你希望这个内容在滚动到一定位置后固定在视窗的某个地方。这时,你可以给这个内容设置position:sticky;,并指定一个top值。
            这样,当页面滚动到设置的top位置时,内容就会“粘”在那里,不再滚动。
        </p>
    </div>
    <div class="stickyBox">
        <div class="sticky-container">
            <div class="sticky">
                sticky定位元素
            </div>
            <p>方便查看滚动页面的效果</p>
        </div>

    </div>
  <style>
      .stickyBox {
        border: 1px solid black;
        .sticky-container {
            height: 2000px;
            /* 为了能够滚动查看效果 */
            position: relative;
            /* 确保 sticky 定位是相对于这个容器,而不是整个文档 */
        }

        .sticky {
            position: sticky;
            top: 0;
            /* 设定 sticky 的顶部偏移 */
            padding: 10px;
            background-color: #3498db;
            color: white;
            font-size: 20px;
        }
    }
  </style>

如下所示:

sticky布局

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值