css-8.4-定位

定位
1.定位与浮动一样,都是改变元素在正常文档流中的位置,对网页内容进行重新排版
2.当元素没有定位,出现在正常的文档流中,将不会受left、right、top、bottom和z-index的影响

定位属性
1.relative:相对定位
2.absolute:绝对定位
3.fixed:固定定位
4.static:默认,没有定位

注意
1.三种定位方法均使用top、right、bottom、left调整位置
2.当left和right同时存在时,left生效
3.当top和bottom同时存在时,top生效

一:relative:相对定位

position:relative;设置元素为相对定位,其定位机制
1.相对于自己原来在文档流中的位置定位,当不指定top、left等定位值时,不会改变元素位置
2.相对定位元素仍会占据原有文档流中的位置,不会释放

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>realtive:相对定位</title>
	<style type="text/css">
		div{
			width: 100px;
			height: 100px;
			line-height: 100px;
			text-align: center;
		}
		.div1{
			border: 1px solid #0ff;
			/* 相对定位
			元素原来的空间没有被释放 */
			position: relative;
			top: 50px;
			left: 50px;
		}
		.div2{
			background-color: #ff0;
		}
	</style>
</head>
<body>
	<div class="div1">相对定位</div>
	<div class="div2">未设定位</div>
</body>
</html>

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

二:absolute:绝对定位

position:absolute;设置元素为绝对定位,其定位机制
1.相对于第一个非static的祖先元素(即使用了relative、absolute、fixed定位的祖先元素)进行定位
2.如果所有祖先元素均未定位,则相对于浏览器左上角定位
3.使用absolute的元素会从文档流中完全删除,原有空间释放不再占据

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>绝对定位</title>
	<style type="text/css">
		/* 当父元素未设置相对定位时
		div1相对浏览器左上角进行定位 */
		.wrap{
			width: 200px;
			height: 200px;
			border: 1px solid red;
			margin: 0 auto;
			/* 父元素相对定位 */
			position: relative;
		}
		.div1{
			width: 100px;
			height: 100px;
			background-color: #ff0;
			line-height: 100px;
			text-align: center;
			/* 绝对定位 */
			position: absolute;
			top:50px;
			left: 50px;
		}
		/* div2不设置定位
		div1空间释放,被div2占据 */
		.div2{
			width: 100px;
			height: 100px;
			background-color: #0ff;
			line-height: 100px;
			text-align: center;
		}
	</style>
</head>
<body>
	<div class="wrap">
		<div class="div1">绝对定位</div>
		<div class="div2">未设定位</div>
	</div>
</body>
</html>

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

结论
1.当对div1进行定位时原来的空间会被释放,被未定位的div2所占据
2.当居中的父容器没有进行相对定位时,绝对定位的div1相对于浏览器左上角进行定位
3.当居中的父容器进行相对定位时,绝对定位的div1相对于居中的父元素的左上角进行定位

三:fixed:固定定位

  • 固定定位是一种特殊的绝对定位
  • 它于普通定位的区别是
    • 无论父元素是否定位,子元素如果采用固定定位,都将相对于浏览器左上角定位
    • 固定在指定位置,不随浏览器滚动条的滚动而滚动
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>固定定位</title>
	<style type="text/css">
		.wrap{
			width: 200px;
			height: 200px;
			border: 1px solid #f00;
			/* 居中 */
			margin: 0 auto;
			/* 相对定位
			固定定位的div1位置依旧不变 */
			position: relative;
		}
		/* 固定定位 */
		.div1{
			width: 100px;
			height: 100px;
			background-color: #ff0;
			line-height: 100px;
			text-align: center;
			position: fixed;
			top: 50px;
			left: 50px;
		}
		/* 不进行定位,占据div1位置 */
		.div2{
			width: 100px;
			height: 100px;
			background-color: #0ff;
			line-height: 100px;
			text-align: center;
		}
	</style>
</head>
<body>
	<div class="wrap">
		<div class="div1">固定定位</div>
		<div class="div2">未设定位</div>
	</div>
</body>
</html>

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

结论
1.当对div1进行固定定位时原来的空间会被释放,被未定位的div2所占据
2.即使父容器添加了相对定位,固定定位的div1依然相对于浏览器左上角定位

四:使用定位实现元素的绝对居中

  • 定位可以设置元素的绝对居中

基本思路
1.设置父子元素均为定位元素
2.对子元素进行设置

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>居中</title>
	<style type="text/css">
		.wrap{
			width: 200px;
			height: 200px;
			background-color: #ff0;
			/* 将父元素固定 */
			position: fixed;
		}
		.div1{
			width: 100px;
			height: 100px;
			background-color: #0ff;
			/* 子元素相对于浏览器进行定位 */
			margin: 50px;
			line-height: 100px;
			text-align: center;
		}
	</style>
</head>
<body>
	<div class="wrap">
		<div class="div1">div1</div>
	</div>
</body>
</html>

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

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>居中</title>
	<style type="text/css">
		.wrap{
			width: 200px;
			height: 200px;
			background-color: #ff0;
			margin: 0 auto;
			/* 相对定位 */
			position: relative;
		}
		.div1{
			width: 100px;
			height: 100px;
			background-color: #0ff;
			line-height: 100px;
			text-align: center;
			 /* 绝对定位 */
			position: absolute;
			top: 50%;
			margin-top:-50px; 
			left: 50%;
			margin-left: -50px;
		}
	</style>
</head>
<body>
	<div class="wrap">
		<div class="div1">div1</div>
	</div>
</body>
</html>

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

五:z-index

z-index
1.z-index的作用
2.z-index的使用要求
3.z-index:auto 和 z-index:0 的异同
4.z-index相同(处于同一平面的定位元素)的层叠关系

1、z-index的作用

  • 设置定位元素的层叠顺序

2、z-index的使用要求

  • 必须是定位(relative、absolute、fixed)元素才能使用 z-index
  • 使用 z-index需要考虑父容器的约束
    • 如果父容器没有设置 z-index,或父容器设置位 z-index:auto,则子容器的 z-index 可以不受父容器的约束
    • 如果父容器对 z-index 进行了设置,则子容器的层叠顺序将以父容器的 z-index为准(此时子元素的 z-index 只能调整自身与父容器中不同子元素之间的层叠顺序)

3、z-index:auto 和 z-index:0 的异同

  • z-index:auto 为默认值,与z-index:0 处于同一平面
  • z-index:auto 不会约束子元素的 z-index 层次,而 z-index:0 会约束子元素必须与父元素处于同一平面

4、z-index相同(处于同一平面的定位元素)的层叠关系

  • 后来者居上,即写在后面的元素在上一层
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>定位元素的层叠</title>
	<style type="text/css">
		div{
			width: 100px;
			height: 100px;
			text-align: center;
		}
		.div1{
			background-color: #ff0;
			position: absolute;
			top: 20px;
			left: 20px;
			/* 设置div1将在div2上 */
			z-index: 1;
		}
		.div2{
			background-color: #0ff;
			position: absolute;
			top:40px;
			left: 40px;
		}
	</style>
</head>
<body>
	<div class="div1">div1</div>
	<div class="div2">div2</div>
</body>
</html>

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS-in-CSS是一种前端开发技术,也被称为CSS嵌套或CSS模块化。它的主要思想是将CSS样式定义在组件级别,使得样式与组件的逻辑和结构紧密关联,提高代码的可维护性和可重用性。 在传统的CSS开发中,样式是全局共享的,容易造成样式冲突和难以维护。而CSS-in-CSS通过将样式封装在组件内部,实现了样式的局部作用域。这样一来,每个组件都可以拥有自己独立的样式规则,不会相互干扰。 CSS-in-CSS有多种实现方式,其中比较常见的有以下几种: 1. CSS Modules:CSS Modules是一种使用Webpack等构建工具实现的CSS-in-CSS方案。它通过给每个CSS类名添加唯一的哈希值,实现了样式的局部作用域。在使用时,可以通过import语法引入CSS文件,并在组件中使用对应的类名。 2. CSS-in-JS:CSS-in-JS是一种将CSS样式直接写在JavaScript代码中的方式。它通过使用JavaScript对象来描述样式规则,并在运行时动态生成对应的CSS。常见的CSS-in-JS库有styled-components、Emotion等。 3. CSS Nesting:CSS Nesting是一种提案,旨在原生CSS中实现嵌套样式的语法。它使用类似于Sass的嵌套语法,可以更方便地描述组件内部的样式关系。目前,CSS Nesting还处于实验阶段,尚未得到所有浏览器的广泛支持。 总的来说,CSS-in-CSS是一种将CSS样式与组件紧密结合的开发方式,可以提高代码的可维护性和可重用性。不同的实现方式适用于不同的项目需求和开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值