position 属性有哪些值,各有什么特点?

本文详细介绍了CSS中的position属性,包括absolute绝对定位、fixed固定定位、relative相对定位和static静态定位。绝对定位元素相对于最近已定位父元素定位,固定定位则始终相对于浏览器视口。相对定位不影响其他元素,粘性定位是相对和固定的组合,当元素达到特定阈值时变为固定。了解这些定位机制对于网页布局至关重要。
摘要由CSDN通过智能技术生成

positon

定义和用法:position 属性规定元素的定位类型。

说明:这个属性定义建立元素布局所用的 定位机制 。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。

—— 来自 w3school

position 有以下可选值:

其中,CSS 定位机制:

CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。

块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。

行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。

position: absolute;

绝对定位 ,绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于 <html> :

<div class="one">one</div>
<div class="two">two</div>
<div class="three">three</div>

div {
    width: 100px;
    height: 100px;
}

.one {
    background: red;
}

.two {
    background: yellow;
    position: absolute;
    top: 50px;
    left: 50px;
}

.three {
    background: green;
}

position: fixed;

固定定位 ,与绝对定位相似,但元素的包含块为 viewport 视口。该定位方式常用于创建在滚动屏幕时仍固定在相同位置的元素。在下面的示例中,"one" 元素定位在离页面顶部 80px,离页面左侧 20px 的位置。

<div class="an">
    <div class="one">one</div>
    <div class="two">two</div>
</div>

.an {
    width: 500px;
    height: 300px;
    overflow: scroll;
    background: indianred;
}

.one {
    position: fixed;
    top: 50px;
    left: 50px;
    background: red;
    width: 100px;
    height: 100px;
    color: white;
}

.two {
    background: yellow;
    height: 500px;
}

position: relative;

相对定位 ,相对于其正常位置进行定位,不影响其他元素的偏移。

<div class="one">one</div>
<div class="two">two</div>
<div class="three">three</div>

div {
    width: 100px;
    height: 100px;
    color: white;
}

.one {
    background: red;
}

.two {
    background: yellow;
    position: relative;
    top: 50px;
    left: 50px;
}

.three {
    background: green;
}

position: sticky;

粘性定位 ,可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位

这是一个结合了 position:relative 和 position:fixed 两种定位功能于一体的特殊定位。常见的吸顶、吸底(头部返回栏,底部切换栏等)的效果都是使用这个属性:

注意:

  • 须指定 top 、 right 、 bottom 、 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。 并且 top 和 bottom 同时设置时,top 生效的优先级高,left 和 right 同时设置时,left 的优先级高。
  • 设定为 position:sticky 元素的任意父节点的 overflow 属性必须是 visible,否则 position:sticky 不会生效。如果 position:sticky 元素的任意父节点定位设置为 overflow:hidden,则父容器无法进行滚动,所以 position:sticky 元素也不会有滚动然后固定的情况。如果 position:sticky 元素的任意父节点定位设置为 position:relative | absolute | fixed,则元素相对父元素进行定位,而不会相对 viewport 定位。
  • 达到设定的阀值,也就是设定了 position:sticky 的元素表现为 relative 还是 fixed是根据元素是否达到设定了的阈值决定的。

position: static;

静态定位 ,HTML 元素默认情况下的定位方式为 static(静态),静态定位的元素不受 top、bottom、left 和 right 属性的影响,它始终根据页面的正常流进行定位

position: inherit;

inherit 值如同其他 css 属性的 inherit 值,即继承父元素的 position 值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值