定位 (position)

定位 (position)

元素的定位属性

元素的定位属性主要包括定义模式和边偏移两部分。

1、边偏移

边偏移属性描述
top顶端偏移量,定义元素相对于其父元素上边线的距离
right右侧偏移量,定义元素相对于其父元素右边线的距离
bottom底部偏移量,定义元素相对于其父元素下边线的距离
left左侧偏移量,定义元素相当于其父元素左边线的距离

也就是说,以后定位要和这偏移量配合使用,比如 top: 100px; left: 30px;等等

2、定位模式

​ 在css中,position属性用于定义元素的定位模式,其基本语法格式如下:

​ 选择器{position: 属性值;}

​ position属性的常用值

描述
static自动定位(默认的定位方式)
relative相对定位,相对于其原文档流的位置进行定位
absolute绝对定位,相对于其上一个已经定位的父元素进行
flxed固定定位,相对于浏览器窗口进行定位

position: static(静态定位)

静态定位(默认值)

​ 静态定位是所有元素的默认定位方式,当position属性的取值为static时,可以将元素定位于静态定位,所谓静态位置就时各个元素在HTML文档流中默认的值。

​ 白话:就时网页中所有元素都默认的是静态定位哦!其实就是标准流的特性。

​ 在静态定位状态下,无法通过边偏移属性来改变元素的位置。

position: relative(相对定位)

相对定位(自恋型)

​ 相对定位是将元素相对于在标准流中的位置进行定位,当position属性的取值为relative时,可以将元素定位于相对位置。

​ 对元素设置相对定位后,可以通过边偏移属性改变元素的位置,但它在文档流中的位置依然保留。

注意:

​ 1、相对定位最重要的一点是,它可以通过边偏移移动位置,但是原来占有的位置,继续占有。

​ 2、其次,每次移动位置,是以自己的左上角为基点移动(相对于自己来移动位置),就是说,相对定位的盒子仍然在标准流中,它后面的盒子 仍然以标准流方式对待它。(相对定位不脱标)。

​ 如果说浮动的目的是让多个块级元素在一行显示,那么定位的主要价值就是移动位置,让盒子到我们想要的位置上去。

​ 相对定位占有位置是不脱标的。

position: absolute(绝对定位)

绝对定位 (拼爹型)

​ 绝对定位的元素的位置相对于最近已经定位的父级元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。

​ 绝对定位是完全脱标的,不占有位置 (漂起来的)。

​ 绝对定位父亲没有定位,孩子以浏览器为基准点对齐。

​ 绝对定位父亲又定位,孩子以最近的带有定位的父级为基准点对齐(absolute和relative都可以)。

子绝父相

如果给父亲加绝对定位影响布局,所以给父级加相对定位。

父亲加相对定位,孩子加绝对定位,最好。

定位的盒子水平居中

加了绝对定位过的盒子margin: 左右 auto;不起作用。

定位盒子的水平居中的算法

1、先让子盒子走父盒子的width的一半及left: 50%;。

2、再让子盒子向反方向走自己宽度的一半 (外边距margin-left: 负的自身一半;)。

t2

定位的盒子垂直居中

1、先让盒子走父级盒子的height一半及top: 50%;

g

2、在让子盒子向反方向走自身height一半 (margin-top: 负的自身一半;)。

相对定位于绝对定位的使用
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <style>
	*{
		margin: 0;
		padding: 0;
	}
	.da {
		width: 800px;
		height: 400px;
		background-color: #000;
		border: 1px solid #ccc;
		margin: 20px auto;
		position: relative;
	}
	.xiao {
		width: 800px;
		height: 400px;
	}
	.da a{
		display: inline-block;
		width: 64px;
		height: 64px;
		background-color: rgba(0,0,0, .3);
		position: absolute;
		top: 50%;
		margin-top: -32px;
	}
	.l {
		left: 0;
	}
	.r {
		right: 0;
	}
	ul {
		width: 140px;
		height: 20px;
		background-color: rgba(255,255,255, .4);
		position: absolute;
		bottom: 10px;
		left: 400px;
		margin-left: -70px;
		border-radius: 20px 20px;
		line-height: 20px;
	}
	ul li{
		list-style: none;
		float: left;
		height: 10px;
		width: 10px;
		background-color: rgba(255,255,255, .5);
		margin:5px;
		border-radius: 50%;
		
	}
      .current {
          background-color: #f10215;
      }
  </style>
 </head>
 <body>
	<div class="da">
		<img src="1.jpg" class="xiao" alt="">
		<a href="1.png" class="l"><img src="1.png" alt=""></a>
		<a href="2.png" class="r"><img src="2.png" alt=""></a>
		<ul>
			<li class="current"></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>
	</div>
	
 </body>
</html>

position: fixed(固定定位)

固定定位(认死理型)

固定定位是绝对定位的一种特殊形式,类似于正方形是一个特殊的矩形。它以浏览器窗口作为参照物来定义网页元素。当position属性的取值为fixed时,即可将元素的定位模式设置为固定定位。

当对元素设置固定定位后,它将脱离标准文档流的控制,始终依据浏览器窗口来定义自己的位置,不管浏览器滚动条如何滚动也不管浏览器窗口大小如何变化,该元素都会始终显示在浏览器窗口固定的位置。

固定定位有两点:

​ 1、固定定位的元素和父级元素没有任何关系,只认浏览器。

​ 2、固定定位完全脱标,不占有位置,不随滚动条滚动。

1e6等低版本浏览器不支持固定定位。

固定定位案例:
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <style>
	*{
	margin: 0;
	padding: 0;
	
	}
	ul,a{
		list-style: none;
		text-decoration: none;
	}
	.w{
		width: 50%;
		margin: 0 auto;
	}
	nav{
		width: 100%;
		height: 41px;
		background: #FCFCFC;
		border-top: 3px solid #FF8500;
		border-bottom: 1px solid #edeef0;
		position: fixed;
		left: 0;
		top: 0;
		z-index: 1;
	}
	nav a{
		display: inline-block;
		height: 41px;
		line-height: 41px;
		font-size: 14px;
		color: #4c4c4c;
		text-decoration: none;
		padding: 0px 15px;	
	}
	nav a:hover{
		background: #eee;
	}
	.zx{
		height: 2000px;
		background-color: skyblue;
		margin: 45px auto;
		position: relative;
	}
	.new{
		position: absolute;
		left: 50%;
		top: 200px;
		margin-left: -119px;
		height: 294px;
		width: 238px;
		border: 1px solid #D9E0EE;
		border-top:3px solid #FF8400;
	}
	h3{
		height: 35px;
		font-size: 16px;
		font-weight: normal;
		line-height: 35px;
		border-bottom: 1px solid #d9e0ee;
		padding-left: 12px;
	}
	.new img{
		width: 220px;
		height: 160px;
		margin: 7px 0 0 9px;	
	}
	.new ul{
		margin-left: 8px;
	}
	.new ul li{
		padding-left: 12px;
		line-height: 26px;
		background: url("1.png") no-repeat left center;
		background-size: 5px 5px;
	}
	.new ul li a{
		font-size: 12px;
		color: #666;
	}
	.cebian{
		position: fixed;
		margin: 40px 100px;
	}
	.cebian ul li{
		height: 50px;
		width: 100px;
		line-height: 50px;
		font-weight: 400;
		font-size: 18px;
		text-align: center;
		border-radius: 10%;
		cursor: pointer;
	}
	.cebian ul li:hover{
		background-color: #f10215;
		color: #fff;

	}
	.cebian .c_red{
		background-color: #f10215;
		color: #fff;
	}
  </style>
 </head>
 <body>
	<nav>
		<div class="w">
			<a href="">首页</a>
			<a href="">手机新浪网</a>
			<a href="">网站导航</a>
			<a href="">三个字</a>
		</div>
	</nav>
		<div class="cebian">
		<ul>
			<li class="c_red">热门</li>
			<li>头条</li>
			<li>视频</li>
			<li>新鲜事</li>
			<li>榜单</li>
			<li>搞笑</li>
			<li>创意</li>
			<li>社会</li>
			<li>工艺</li>
			<li>健身</li>
			<li>时尚</li>
			<li>电影</li>
		</ul>
	</div>
	<div class="w zx">
		<div class="new">
			<h3>搜素趣图</h3>
			<img src="3f.jpg" alt="">
			<ul>
				<li><a href="#">你好明天 会更好</a></li>
				<li><a href="#">你好明天 会更好</a></li>
				<li><a href="#">你好明天 会更好</a></li>
			</ul>
		</div>
	</div>
 </body>
</html>

z-index(叠放次序)

当多个元素同时设定时,定位元素之间有可能会发生重叠。

层叠

在css中想要调整重叠定位元素的堆积顺序,可以对定位元素应用z-index,层叠等级属性其取值可为正整数,负整数和0。

注意:

​ 1、z-index的默认值属性为0,取值越大,定位元素在层叠元素中越居上。

​ 2、如果取值相同,则根据书写顺序,后来者居上。

​ 3、后面数据一定不能加单位。

​ 4、只要相对定位,绝对定位,固定定位,才有此属性,其余标准流,浮动,静态定位都没有此属性,亦不可指定此属性。

四种定位总结

定位模式是否脱标占有位置是否可以使用边偏移移动位置的基准
静态定位static不脱标,正常模式,占有位置不可以正常模式
相对定位relative不脱标,占有位置可以相对自身的位置
绝对定位absolute脱标,不占有位置可以相对于定义父级元素移动位置
固定定位fixed脱标,不占有位置可以相对于浏览器移动位置

定位模式

和浮动一样,元素添加了绝对定位和固定定位之后,元素模式也发生转换,都转化为,行内块模式。

因此,比如说行内元素如果添加了绝对定位或固定定位和浮动后,可以不用转化模式,直接给高度和宽度就可以了。

元素的显示于隐藏

display 显示

display 设置或检索对象是否及如何显示。

display: none;隐藏对象,与它相反的是display: block;除了转化为块级元素外,同时还有显示元素的意思。

特点:隐藏后,不在保留位置

visibility 可见性

设置元素或检索是否显示对象。

visible:对象可视。

hidden:对象隐藏。

特点:隐藏之后,继续保留原有位置。

显示案例
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Document</title>
	<style>
		div {
			height: 50px;
			width: 50px;
			margin: 100px auto;
			background-color: #000;
			position: relative;
		}
		div img{
			position: absolute;
			left: 50px;
			top: 50px;
			display: none;
             /*visibility: hidden;*/
		}
		div:hover img{
			display: block;
            /*visibility: visible;*/
		}
	</style>
 </head>
 <body>
  <div>
	<img src="3f.jpg" width="100px" height="100px" alt="">
  </div>
 </body>
</html>

overflow 溢出

检索或设置当前对象的内容超过其指定高度及宽度时如何管理内容。

visible:默认值,不剪切内容也不添加滚动条。

auto:超出自动显示滚动条,不超出不显示滚动条。

hidden:不显示超过对象尺寸的内容,超出的部分隐藏掉。

scroll:不管超出内容否,总是显示滚动条

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值