HTML-CSS(二十)CSS元素定位

65 篇文章 3 订阅

position

概念

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

属性值

position:static 默认定位 不脱离文档

position:absolute 绝对定位 脱离文档

特性

使元素完全脱离文档流;
在这里插入图片描述
使内联元素支持宽高(让内联具备块特性)
在这里插入图片描述
使块元素默认宽根据内容决定(让块具备内联特性);

正常情况块元素默认宽度100%,但是因为position:absolute让块元素也具备了内联的特性
在这里插入图片描述
这个与浮动元素非常相似
在这里插入图片描述
如果有定位祖先元素,则相对于定位祖先元素发生偏移;如果没有定位祖先元素,则相对于整个文档发生偏离(绝对、相对、固定)

祖先元素有定位元素(绝对、相对、固定)
在这里插入图片描述
如果祖先元素没有定位元素,相对于整个浏览器
在这里插入图片描述
相对于上一层的除了static定位元素,一般会将想要相对于的元素设置relative(看下文),因为relative不会脱离文档 。如果一直没有找到目标定位的元素,那么 就会以浏览器窗口为主

position:relative 相对定位 不脱离文档
如果没有定位偏移量,对元素本身没有任何影响;不是元素脱离文档流;不影响其它元素布局。left、top、right、bottom是相对于当前元素进行偏移的。top:0;left:0 就是自身的左上角,所以是相对于当前元素进行偏移
在这里插入图片描述
position:fixed 固定定位 脱离文档
使元素完全脱离文档流

使内联元素支持宽高(让内联具备块特性)

使块元素默认宽度根据内容决定(让块具备内联特性)

相对于整个浏览器窗口进行偏移的,不受浏览器滚动条的影响

与position:absolute特性差不多相似,区别在下图
fixed不随滚动条发生变化
在这里插入图片描述
absolute随滚动条而滚动
在这里插入图片描述
fixed不会因为祖先元素有定位,而以该祖先进行定位
在这里插入图片描述
position:sticky 粘性定位 脱离文档
在指定的位置,进行粘性操作。当元素设置里left/top/right/bottom值并且设置pistion:sticky之后,当元素滚动到指定的数值时就不再移动,并且固定在窗口处。
sticky与fixed的区别在于,fixed是一直不动,sticky是根据属性值进行移动到一定位置之后才不在移动。
在这里插入图片描述
sticky失效原因
1.父元素不能出现overflow:hidden或者overflow:auto属性
在这里插入图片描述
2.父元素的高度不能和sticky高度一样
父元素靠子元素自然撑开,自然高度就会等同于子元素,因此sticky也失效了
在这里插入图片描述
z-index定位层级

默认层级为0,值可以正、负数和零

正常情况下:后面写的样式优先级较高,所以blue压在yellow上。默认z-index:0
在这里插入图片描述
通过z-index:1能够将yellow放在blue上面
在这里插入图片描述
嵌套时候的层级问题

当不是同级之间的比较时,即使子元素的z-index再高,如果父元素的z-index低于另一个父元素的z-index,那么也会被压在底部
在这里插入图片描述
做一个小练习试一试把:
源代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			html,body{
				margin: 0;
				padding: 0;
			}
			.box{
				border: 1px solid #FFC0CB;
				width: 600px;
				height: 600px;
				position: relative;  /* absolute相对于上一级的relative*/
			}
			.pointL{
				width: 80px;
				height: 80px;
				border-radius: 40px;   /* 形成圆角 圆角半径=宽度一半时 刚好就是一个圆*/
				background-color: pink;
				text-align: center;
				line-height: 80px;
				position: absolute; 
				left: 65px;  /* 距离上最近的relative定位元素而言,距离他的最左侧距离*/
				top: 257px;   /* 距离上最近的relative定位元素而言,距离他的顶部距离*/
			}
			.pointR{
				width: 80px;
				height: 80px;
				border-radius: 40px;
				background-color: pink;
				text-align: center;
				line-height: 80px;
				position: absolute;
				left: 358px;
				top: 202px;
			}
		</style>
	</head>
	<body>
		<div class="box">
			<img src="../img/可爱二.jpg" >
			<div class="position">
				<div class="pointL">
					<span>超级</span>
				</div>
				<div class="pointR">
					<span>可爱</span>
				</div>
			</div>
		</div>
	</body>
</html>

原图:
在这里插入图片描述
效果图:
在这里插入图片描述

练习二(:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#menu{
				border: 1px solid #000000;
				background-color: #00FFFF;
				position: fixed;
				left: 200px;
				width: 200px;
			}
			#txt{
				background-color: yellow;
			}
			#menu:hover ul{
				display: block;
			}
			ul{
				display: none;
			}
		</style>
	</head>
	<body>
		<div id="menu">
			<p>卖家菜单</p>
			<ul id="ul">
				<li>123</li>
				<li>123</li>
				<li>123</li>
				<li>123</li>
			</ul>
		</div>
		<div id="txt">
			猪肉青菜馅饺子真的好好吃!!!!隔~猪肉青菜馅饺子真的好好吃!!!!隔
		</div>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值