CSS---position属性(超详解)

一、是什么?

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

二、取值有哪些?

  • static

该关键字指定元素使用正常的布局行为,即元素在文档常规流中当前的布局位置。此时 top, right, bottom, left 和 z-index 属性无效。

  • relative

该关键字下,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)。

  • absolute

元素会被移出正常文档流,并不为元素预留空间,通过指定元素相对于最近的非 static 定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margins),且不会与其他边距合并。

  • fixed

元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform, perspective 或 filter 属性非 none 时,容器由视口改为该祖先。

  • sticky

元素根据正常文档流进行定位,然后相对它的最近滚动祖先(nearest scrolling ancestor)和 containing block (最近块级祖先 nearest block-level ancestor),包括table-related元素,基于top, right, bottom, 和 left的值进行偏移。偏移值不会影响任何其他元素的位置。

三、案例详解

相对定位:

在这里插入图片描述

  • 在html布局中:水平向右为正,垂直向下为正,本例设置盒子two的position为relative,则其原本的位置还保存着,但是实际的位置通left和top向左向下偏移。

绝对定位

在这里插入图片描述

  • 在布置文档流中其它元素时,绝对定位元素不占据空间。绝对定位元素相对于最近的非 static 祖先元素定位。这里相对于整个布局,向下向右偏移了20px。

固定定位

在这里插入图片描述

  • 该定位方式常用于创建在滚动屏幕时仍固定在相同位置的元素,即盒子one的位置为固定定位,是基于整个页面布局来说,它的位置是不变的。

粘性定位

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div.sticky {
				position: sticky;
				top: 0;
				padding: 5px;
				background-color: #cae8ca;
				border: 1px solid #00557f;
			}
		</style>
	</head>
	<body>

		<p>尝试滚动页面。</p>
		<p>注意: IE/Edge 15 及更早 IE 版本不支持 sticky 属性。</p>

		<div class="sticky">我是粘性定位!</div>

		<div style="padding-bottom:2000px">
			<p>滚动我</p>
			<p>来回滚动我</p>
			<p>滚动我</p>
			<p>来回滚动我</p>
			<p>滚动我</p>
			<p>来回滚动我</p>
		</div>

	</body>
</html>
  • 运行展示链接:粘性定位
  • 这里粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位

四、总结

关键字说明性质
static默认定位不设置position时,不可使用top,left等属性
relative相对定位元素占据原来位置,用top left等属性进行基于原位置的偏移
absolute绝对定位元素不占据原来位置,用top left等属性进行基于祖先元素的偏移
fixed固定定位元素不占据原来位置,用top left等属性进行基于整体页面的偏移
sticky粘性定位用top left等属性进行偏移,偏移值不会影响任何其他元素的位置

详情请见:position详解

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Philo`

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

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

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

打赏作者

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

抵扣说明:

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

余额充值