css定位五种方式(代码,图片)详解

本文详细介绍了CSSposition属性的五种定位方式:static、fixed、relative、absolute和sticky,阐述了它们的工作原理、示例和在布局中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定位 position 属性

position 属性规定应用于元素的定位方法的类型。

有五个不同的位置值:

  • static
  • relative
  • fixed
  • absolute
  • sticky

元素其实是使用 top、bottom、left 和 right 属性定位的。但是,除非首先设置了 position 属性,否则这些属性将不起作用。根 据不同的 position 值,它们的工作方式也不同。

position: static;

HTML 元素默认情况下的定位方式为 static(静态)。

静态定位的元素不受 top、bottom、left 和 right 属性的影响。

position: static; 的元素不会以任何特殊方式定位;它始终根据页面的正常流进行定位。

实例:

<style>
        .div1 {
            width: 400px;
            height: 50px;
            position: static;
            top: 100px;
            left: 200px;
            background-color: aqua;
            border: 2px solid red;
        }
    </style>
</head>

<body>
    <div class="div1">使用position: static进行定位</div>
</body>

效果:

如下图显示当我们使用静态定位时,是根据文档流进行排列。在添加 top、left等方位时是不会出现效果。

我们在打开开发人员工具也可以看到箭头标识上显示没有生效的提示。

在这里插入图片描述

position: fixed;

position: fixed; 的元素是相对于视口定位的,这意味着即使滚动页面,它也始终位于同一位置。 top、right、bottom 和 left 属性用于定位此元素。

固定定位的元素不会在页面中通常应放置的位置上留出空隙。

实例:

<style>
        /* 静态定位 */
        .div1 {
            width: 400px;
            height: 50px;
            position: static;
            top: 100px;
            left: 200px;
            background-color: aqua;
            border: 2px solid red;
        }

        /* 视口定位 */
        .div2 {
            position: fixed;
            bottom: 100px;
            right: 100px;
            width: 200px;
            height: 200px;
            background-color: pink;

        }
    </style>
</head>

<body>
    <div class="div1">使用position: static进行定位</div>
    <div class="div2">使用使用position: static进行定位</div>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>
    <h1>1644</h1>

在这里插入图片描述

效果:

因为当前元素无法撑开页面,在里面插入h1标签撑开窗口。如下图一显示,观察当在浏览器最顶部时视口定位的粉色盒子的位置。当我们进行滚动窗口时内容会发生改变,但是粉色盒子不会受到影响

第二张图片:

在这里插入图片描述

position: relative;

相对定位position: relative; 的元素相对于其正常位置进行定位。设置相对定位的元素的 top、right、bottom 和 left 属性将导致其偏离其正常位置进行调整。不会对其余内容进行调整来适应元素 留下的任何空间。

代码:

style>
        /* 静态定位 */
        .div1 {
            width: 400px;
            height: 50px;
            position: static;
            top: 100px;
            left: 200px;
            background-color: aqua;
            border: 2px solid red;
        }

        /* 视口定位 */
        .div2 {
            position: fixed;
            bottom: 100px;
            right: 100px;
            width: 200px;
            height: 200px;
            background-color: pink;

        }

        /* 相对定位 */
        .div3,
        .div4 {
            position: relative;
            height: 100px;
            border: 2px solid blue;
        }

        .div3 {
            top: -20px;
            left: 10px;
        }
    </style>
</head>

<body>
    <div class="div1">使用position: static进行定位</div>
    <div class="div2">使用position: static进行定位</div>
    <div class="div3">使用position: relative;进行定位</div>
    <div class="div4">测试</div>


</body>

效果:相对定位相对的是它原本在文档流中的位置而进行的偏移,而我们也知道relative定位也是遵循正常的文档流,它没有脱离文档流,但是它的top/left/right/bottom属性是生效的,可以说它是static到absoult的一个中间过渡属性,最重要的是它还占有文档空间,而且占据的文档空间不会随 top / right / left / bottom 等属性的偏移而发生变动
在这里插入图片描述

position: absolute;

绝对定位是元素以带有定位的父级元素来移动位置

  1. 完全脱标 —— 完全不占位置;

  2. 父元素没有定位,则以浏览器为准定位(body)。

  3. 父元素要有定位
    将元素依据最近的已经定位(绝对、固定或相对定位)的父元素(祖先)进行定位。

    绝对定位的特点:

    • 绝对是以带有定位的父级元素来移动位置 如果父级都没有定位,则以浏览器文档为准移动位置
    • 不保留原来的位置,完全是脱标的。

    定位口诀 —— 子绝父相

子绝父相 —— 子级绝对定位,父级要用相对定位。

代码:

<style>
        /* 静态定位 */
        .div1 {
            width: 400px;
            height: 50px;
            position: static;
            top: 100px;
            left: 200px;
            background-color: aqua;
            border: 2px solid red;
        }

        /* 视口定位 */
        .div2 {
            position: fixed;
            bottom: 100px;
            right: 100px;
            width: 200px;
            height: 200px;
            background-color: pink;

        }

        /* 相对定位 */
        /* .div3,
        .div4 {
            position: relative;
            height: 100px;
            border: 2px solid blue;
        }

        .div3 {
            top: -20px;
            left: 10px;
        } */
        /* 父元素相对定位 */
        .div5 {
            position: relative;
            height: 400px;
            background-color: pink;
        }

        /* 子元素绝对定位 */
        .div6 {
            position: absolute;
            width: 400px;
            height: 200px;
            top: 100px;
            left: 300px;
            background-color: red;
        }
    </style>
</head>

<body>
    <div class="div1">使用position: static进行定位</div>
    <div class="div2">使用position: static进行定位</div>
    <!-- <div class="div3">使用position: relative;进行定位</div> -->
    <!-- <div class="div4">测试</div> -->
    <div class="div5">父元素相对定位
        <div class="div6">子元素绝对定位</div>
    </div>

</body>

效果:

在这里插入图片描述

position: sticky;

position: sticky; 的元素根据用户的滚动位置进行定位。 粘性元素根据滚动位置在相对(relative)和固定(fixed)之间切换。起先它会被相对定位,直到在视口中遇到给定的偏移位置为 止,然后将其“粘贴”在适当的位置。

代码:

<style>
        /* 静态定位 */
        .div1 {
            width: 400px;
            height: 50px;
            position: static;
            top: 100px;
            left: 200px;
            background-color: aqua;
            border: 2px solid red;
        }

        /* 视口定位 */
        .div2 {
            position: fixed;
            bottom: 100px;
            right: 100px;
            width: 200px;
            height: 200px;
            background-color: pink;

        }

        /* 相对定位 */
        /* .div3,
        .div4 {
            position: relative;
            height: 100px;
            border: 2px solid blue;
        }

        .div3 {
            top: -20px;
            left: 10px;
        } */
        /* 父元素相对定位 */
        .div5 {
            position: relative;
            height: 400px;
            background-color: pink;
        }

        /* 子元素绝对定位 */
        .div6 {
            position: absolute;
            width: 400px;
            height: 200px;
            top: 100px;
            left: 300px;
            background-color: red;
        }

        .div7 {
            position: -webkit-sticky;
            position: sticky;
            height: 100px;
            top: 50px;
            background-color: green;

        }
    </style>
</head>

<body>
    <div class="div1">使用position: static进行定位</div>
    <div class="div2">使用position: static进行定位</div>
    <!-- <div class="div3">使用position: relative;进行定位</div> -->
    <!-- <div class="div4">测试</div> -->
    <div class="div5">父元素相对定位
        <div class="div6">子元素绝对定位</div>
    </div>
    <div class="div7">粘性定位</div>

在这里插入图片描述

当图片达到设定top时会从静态定位转为固定定位,如下图显示
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值