详解 CSS position定位的五种方式

15 篇文章 1 订阅

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>
    <head>
        <meta charset="utf-8">
        <title>7.1 position定位</title>
    </head>
    <style>
        div {
            position: static;
            border: 3px solid #73AD21;
            text-align: center;
        }
    </style>
    <body>
        <div>
            <h2>《游子吟》</h2>
            <p>慈母手中线,游子身上衣。</p>
            <p>临行密密缝,意恐迟迟归。</p>
            <p>谁言寸草心,报得三春晖。</p>
        </div>
    </body>
</html>

 运行后如图:

二、position: relative;

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

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

举例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>7.1 position定位</title>
    </head>
    <style>
        div {
            position: relative;
            left: 30px;
            border: 3px solid #73AD21;
            text-align: center;
        }
    </style>
    <body>
        <div>
            <h2>《游子吟》</h2>
            <p>慈母手中线,游子身上衣。</p>
            <p>临行密密缝,意恐迟迟归。</p>
            <p>谁言寸草心,报得三春晖。</p>
        </div>
    </body>
</html>

 运行后如图:

 

三、position: fixed;

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

举例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>7.1 position定位</title>
    </head>
    <style>
        div {
            text-align: center;
        }
 
        span {
            position: fixed;
            bottom: 0;
            right: 0;
            width: 60px;
            height: 60px;
            text-align: center;
            line-height: 60px;
            border: 3px solid #73AD21;
        }
    </style>
    <body>
        <div>
            <h2>《游子吟》</h2>
            <p>慈母手中线,游子身上衣。</p>
            <p>临行密密缝,意恐迟迟归。</p>
            <p>谁言寸草心,报得三春晖。</p>
        </div>
        <span>点赞</span>
    </body>
</html>

运行后如图:

 

四、position: absolute;

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

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

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

举例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>7.1 position定位</title>
    </head>
    <style>
        div.relative {
            position: relative;
            width: 400px;
            height: 200px;
            border: 3px solid #8faaa2;
        }
 
        span.absolute {
            position: absolute;
            top: 30px;
            right: 10px;
            width: 60px;
            height: 60px;
            line-height: 60px;
            text-align: center;
            border: 3px solid #55aa7f;
        }
    </style>
    <body>
        <div class="relative">
            <h2>《游子吟》</h2>
            <p>慈母手中线,游子身上衣。</p>
            <p>临行密密缝,意恐迟迟归。</p>
            <p>谁言寸草心,报得三春晖。</p>
            <span class="absolute">点赞</span>
        </div>
    </body>
</html>

运行后如图:

 

说明:此例注意和上一个例子区分开,span是在div父元素里面,只有父元素定位relative,才能使span元素absolute定位生效。

五、position: sticky;

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

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

例如:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>7.1 position定位</title>
    </head>
    <style>
        div.sticky {
            position: -webkit-sticky;
            position: sticky;
            top: 0;
            padding: 5px;
            background-color: #cae8ca;
            border: 2px solid #4CAF50;
        }
    </style>
    <body>
        <p>请试着在这个框架内<b>滚动</b>页面,以理解粘性定位的原理。</p>
 
        <div class="sticky">我是有粘性的!</div>
 
        <div style="padding-bottom:2000px">
            <p>在此例中,当您到达元素的滚动位置时,粘性元素将停留在页面顶部(top: 0)。</p>
            <p>向上滚动以消除粘性。</p>
            <p>一些启用滚动的文本.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum,
                altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus
                repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
            <p>一些启用滚动的文本.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum,
                altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus
                repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
        </div>
 
    </body>
</html>

运行后如图:

 

详解 CSS position定位的五种方式_网页制作_青青个人博客

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
CSS中的position属性有多个值,其中包括relative和absolute。这两个值可以同时使用。 当元素的position属性设置为relative时,它会相对于其正常位置进行定位。也就是说,元素仍会占据文档流中的空间,并且其他元素不会被该元素覆盖。通过设置top、right、bottom和left属性,可以将相对定位的元素在其正常位置的基础上进行偏移。 相反,当元素的position属性设置为absolute时,它会脱离文档流,并相对于其最近的已定位祖先元素进行定位,如果不存在已定位的祖先元素,则相对于文档的初始包含块进行定位。通过设置top、right、bottom和left属性,可以将绝对定位的元素相对于其定位环境进行偏移。 因此,当同时设置relative和absolute时,元素会先相对于其正常位置进行定位,并且仍会占据文档流中的空间,然后再相对于定位环境进行偏移。这样可以灵活地控制元素的位置,并且不会影响其他元素的布局。 需要注意的是,relative和absolute定位的元素的定位效果会受到父元素的position属性的影响。如果父元素的position属性为static(默认值),那么相对于父元素进行定位的元素将相对于文档的初始包含块进行定位。如果父元素的position属性为relative或absolute,则相对于父元素进行定位的元素将相对于父元素进行定位。 总结起来,当同时设置CSSposition属性为relative和absolute时,元素会先相对于其正常位置进行定位,然后再相对于定位环境进行偏移。这样可以灵活地控制元素的位置,同时保持其他元素的布局不受影响。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [css position: absolute、relative详解](https://download.csdn.net/download/weixin_38501810/13075425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [CSS(层叠样式表)笔记.txt](https://download.csdn.net/download/bxy0806/88237826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [CSS position属性absolute relative等五个值的解释](https://download.csdn.net/download/weixin_38650629/13677169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wwwarewow

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

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

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

打赏作者

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

抵扣说明:

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

余额充值