position中absolute、relative、fixed、static

position样式的四个取值
absolute相对于非static的最靠近的祖先元素进行定位。会忽略eft、top、right、bottom和z-index属性,只有margin起作用
relative相对于自己在正常文档流的位置进行定位。margin+top一起起作用
fixed相对于浏览器窗口进行定位。元素未滚动,在当前可视区域他的top值不生效,只有margin生效,滚动起来后margin失效,top值生效
static采用正常文档流定位(默认)。margin+top一起起作用

说明:非static元素的位置需要采用样式属性top、left、bottom、right进行设置,取值可为负值。这四个样式属性对static不起作用。

  • absolute

当定位元素的包含块都是static时,其相对于初始包含块(html的包含块/整个html网页)定位

<html>
<head>
<style type="text/css">
 	html{
		background-color:red;
		border:solid 1px black;
		margin:20px 40px;
	}
	body{
		background-color:blue;
		border:solid 1px black;
		margin:20px 40px;
	}
	div{
		background-color:black;
		border:solid 1px black;
		margin:50px 50px;
		height:2000px;
	}
	h2{
		position:absolute;
		background-color:green;
		left:0px;
		top:0px;
	}
	
</style>
</head>

<body>
<div>
	<h2>position-absolute</h2>
</div>
</body>

</html>

-------------------------------------小插曲----------------------------------------------------------------

因为好奇初始包含块和html的关系,所以分别设了html和body的border、margin、和background-color。

结果如下:

从下图看html设了margin后border不和视口(viewport)重合,但其背景颜色并不只是在border以内,而是填满整个网页。

当去掉html的样式属性,则body的背景颜色也是填满整个网页,而不是在border以内。

------------------------------------------小插曲结束-------------------------------------------------------

绝对定位元素随网页滚动而滚动

当绝对定位元素的最近包含块div设为relative时,该绝对定位元素相对于div定位


  • relative
<div>
	<h2 id="normal">position-absolute</h2>
	<h2 id="toright">position-absolute</h2>
	<h2 id="toleft">position-absolute</h2>
</div>
        h2{
		background-color:green;
	}
	#toleft{
		position:relative;
		left:-20px;
	}
	#toright{
		position:relative;
		left:20px;
	}



  • fixed

相对于浏览器窗口固定,不会随着网页的滚动而滚动,多用于广告之类。

  • static

文档流的正常位置

例题:

以下代码,分别给节点 #box 增加如下样式,问节点 #box 距离 body 的上边距是多少?

<body style=”margin:0;padding:0”>
    <div id=”box” style=”top:10px;margin:20px 10px;”>
    </div>
</body>

如果设置 position: static ; 则上边距为 20 px

如果设置 position: relative ; 则上边距为 30 px

如果设置 position: absolute ; 则上边距为 30 px

如果设置 position: sticky ; 则滚动起来上边距为 10 px


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是CSS五种常见的定位方式的介绍和用法: 1. static(静态定位):元素的位置遵循正常的文档流,不受top、bottom、left、right影响。 2. relative(相对定位):元素的位置相对于它在文档流的初始位置进行定位,可以通过top、bottom、left、right属性进行微调。 3. absolute(绝对定位):元素的位置相对于最近的已定位祖先元素(position属性不为static)进行定位,如果没有已定位的祖先元素,则相对于文档的body元素进行定位。 4. fixed(固定定位):元素的位置相对于浏览器窗口进行定位,不随页面滚动而改变。 5. sticky(粘性定位):元素在跨越特定阈值前为相对定位,之后为固定定位。可以通过top、bottom、left、right属性进行微调。 下面是一个例子,展示了这五种定位方式的用法: ```html <!DOCTYPE html> <html> <head> <title>定位方式示例</title> <style type="text/css"> .container { height: 300px; position: relative; border: 1px solid black; } .box { width: 100px; height: 100px; background-color: red; color: white; text-align: center; line-height: 100px; font-size: 20px; } .static { position: static; } .relative { position: relative; top: 50px; left: 50px; } .absolute { position: absolute; top: 50px; left: 50px; } .fixed { position: fixed; top: 50px; left: 50px; } .sticky { position: sticky; top: 50px; } </style> </head> <body> <div class="container"> <div class="box static">static</div> <div class="box relative">relative</div> <div class="box absolute">absolute</div> <div class="box fixed">fixed</div> <div class="box sticky">sticky</div> </div> </body> </html> ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值