CSS布局(必懂) ------position属性

CSS布局---- positon属性

position 属性规定应用于元素的定位方法的类型(static、relative、fixed、absolute 或 sticky)。

------------------------------------------------------------------------------------------

position 属性

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

有五个不同的位置值:

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

-------------------------------------------------------------------------------------------

position: static;

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

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

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

实例:

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1{
            width: 100px;
            height: 100px;
            background-color: aqua;
            position: static;
            left:500px;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
</body>
</html>
运行效果:

可以看出设置的left属性并没有起到作用
在这里插入图片描述

------------------------------------------------------------------------------------------

position: relative;

position: relative; 的元素相对于其正常位置进行定位。

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

未开启前实例:

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
         .box1{
            width: 100px;
            height: 100px;
            background-color:lawngreen;
        }
        .box2{
            width: 100px;
            height: 100px;
            background-color: aqua;
            position:relative;
            left: 100px; /*设置left属性,向右移动100px*/
            top: -100px;/*设置top属性,向上移动100px*/
        }
        .box3{
            width: 100px;
            height: 100px;
            background-color:lightcoral;
            position:relative;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</body>
</html>
运行效果

通过设置left和top属性,将box2移动到box1右边,避免了用margin带来的布局混乱问题,以移动前位置为参照,进行下一次移动,其移动前的位置不会被其他元素占用。
box1:绿色
box2蓝色
box3:红棕色
在这里插入图片描述

------------------------------------------------------------------------------------------

position: fixed;

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

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

------------------------------------------------------------------------------------------

position: absolute;

position: absolute; 的元素相对于最近的定位祖先元素进行定位(而不是相对于视口定位,如 fixed)。

然而,如果绝对定位的元素没有祖先,它将使用文档主体(body),并随页面滚动一起移动。

注意:“被定位的”元素是其位置除 static 以外的任何元素。

这是一个简单的例子:

实例:

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
         .box1{
             width: 400px;
             height: 400px;
             background-color: lightgreen;
             position: relative;
         }
         div > .box2{
             width: 200px;
             height: 200px;
             background-color: mediumvioletred;
             position: absolute;
             top: 200px;
         }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2"></div>
    </div>
  
</body>
</html>
运行效果:

将box2开启绝对定位,对其父元素box1开启相对定位;此时box2相对于box1定位,效果图如下:
开启定位前:
在这里插入图片描述
开启定位后:
在这里插入图片描述

------------------------------------------------------------------------------------------

position: sticky;

position: sticky; 的元素根据用户的滚动位置进行定位。

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

注意:Internet Explorer、Edge 15 以及更早的版本不支持粘性定位。 Safari 需要 -webkit- 前缀(请参见下面的实例)。您还必须至少指定 top、right、bottom 或 left 之一,以便粘性定位起作用。

在此例中,在到达其滚动位置时,sticky 元素将停留在页面顶部(top: 0)。

实例:

完整代码:

在这里我就不给出效果图,有兴趣的小伙伴自己手动尝试下,你会发现不一样的且常用到的布局方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
          body{
                background-color: midnightblue;
                height: 1200px;
             }
         .box1{
             width: 1500px;
             height: 5px;
             position: -webkit-sticky; /* Safari */
             position: sticky;
             top: 0;
             background-color: lightgreen;
         }
    </style>
</head>
<body>
    <div class="box1">
    </div>
  
</body>
</html>

------------------------------------------------------------------------------------------

重叠元素

在对元素进行定位时,它们可以与其他元素重叠。

z-index 属性指定元素的堆栈顺序(哪个元素应放置在其他元素的前面或后面)。

元素可以设置正或负的堆叠顺序:

这是一个标题由于图像的 z-index 为 -1,所以它位于文本后面。
实例
img {
position: absolute;
left: 0px;
top: 0px;
z-index: -1;
}
你可以亲自试一试
具有较高堆叠顺序的元素始终位于具有较低堆叠顺序的元素之前。

注意: 如果两个定位的元素重叠而未指定 z-index,则位于 HTML 代码中最后的元素将显示在顶部

详细关于z-index的解释在后续博客将会更新。

感谢支持,创作不易,烦忙你点一点赞,么么!

在这里插入图片描述

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

禅院甚尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值