CSS的定位属性有四种,绝对定位,相对定位,静态定位,固定定位。
:| | | 已修复
position: absolute;
position: relative;
position: fixed;
相对定位
相对定位:调整元素相对于原始位置的位置(可用于微调盒子的位置)。
我们之前学过的背景属性的格式如下:
background-position:向右偏移量 向下偏移量;
但这次定位属性的格式如下:
position: relative;
left: 50px;
top: 50px;
相对定位的示例:
html>
<html lang="en">
<head>
<style type="text/css">
body{
margin: 0px;
}
.div1{
width: 200px;
height: 200px;
border: 1px solid red;
}
.div2{
position: relative;/*相对定位:相对于自己原来的位置*/
left: 50px;/*横坐标:正值表示向右偏移,负值表示向左偏移*/
top: 50px;/*纵坐标:正值表示向下偏移,负值表示向上偏移*/
width: 200px;
height: 200px;
border: 1px solid red;
}
style>
head>
<body>
<div class="div1">有生之年div>
<div class="div2">狭路相逢div>
body>
html>
影响:
相对定位没有偏离目标
相对定位:不会偏离目标,在家乡留下空当,别人也不会挤走它的位置。
也就是说,相对定位的真正位置还在家乡,但是影子已经出去了,可以飘到各处了。
相对定位的目的
如果我们想将一个 div 放在另一个 div 之上,通常不会使用相对定位。相对定位有两个功能:
相对定位的定位值
PS:负数表示相反方向。
↘:
position: relative;
left: 40px;
top: 10px;
↙:
position: relative;
right: 100px;
top: 100px;
↖:
position: relative;
right: 100px;
bottom: 100px;
↗:
position: relative;
left: 200px;
bottom: 200px;
如果要描述上图的方向,首先可以这样描述:
position: relative;
left: 200px;
top: 100px;
因为left:200px相当于right:-200px,所以这个图其实有四种写法。
绝对定位
绝对定位:定义横纵坐标,原点为父容器的左上角或者左下角,横坐标用left表示,纵坐标用top或者表示。
格式示例如下:
position: absolute; /*绝对定位*/
left: 10px; /*横坐标*/
top/bottom: 20px; /*纵坐标*/
绝对定位不符合标准
绝对定位的框脱离了标准文档流。
因此,绝对定位后不再遵循标准文档流的所有属性。
绝对定位后,标签不会区分所谓的行内元素和块级元素。不需要 :block 来设置宽度和高度。
绝对定位的参考点(重要)
(1)如果用top来描述,那么参考点是页面的左上角,而不是浏览器的左上角:
(2)如果使用描述的话,那么参考点就是浏览器的首屏窗口大小(理解“首屏”这个词),也就是对应页面的左下角:
为了理解“above the fold”一词的含义,我们先来看一下动态图:
问题:
回答:
使用定位的时候参考页面左下角对应浏览器首屏的大小。
使用框作为参考点
对于绝对定位的元素来说,如果其父元素中也有一个定位元素(无论是绝对定位,相对定位,还是固定定位),那么都会以父元素作为参考点。
如下:(儿子和父亲完全不一样)
需要注意以下几点。
(1)想要监听已经定位的最近祖先元素的人,不一定是父亲,有可能是祖父:
"box1"> 相对定位
"box2"> 没有定位
绝对定位,将以box1为参考,因为box2没有定位,box1就是最近的父辈元素
另一个例子:
"box1"> 相对定位
"box2"> 相对定位
绝对定位,将以box2为参考,因为box2是自己最近的父辈元素
(2)不一定是相对定位,任何定位都可以作为儿子的参考点:
儿子离不开父亲,儿子离不开父亲的长相,儿子离不开父亲的坚固。这些都可以用来定位儿子。但在工程上,如果消除了孩子和父亲,标准流程中将没有盒子,因此页面会不稳定,没有实际用处。
工程应用:
“儿子必须和父亲一样”是有含义的:这样可以保证父亲不偏离标准,而儿子偏离标准则在父亲的范围内移动。所以工程上经常这么做:
父亲浮动,设置相对定位(零偏移),然后让儿子绝对定位在一定距离之外。
(3)绝对定位子,忽略引用框:
下图中绿色部分为父级div,蓝色部分p为div的内容区域,此时如果div是相对定位,p是绝对定位,那么p会忽略父级,以里面为参考点进行定位:
将框以绝对定位方式置于父级的中心
我们知道如果想让标准流中的框在父级中居中(水平查看),可以设置它:0 自动属性。
但是如果盒子是绝对定位的,它已经超出标签范围了。如果你仍然想让它居中(就在父亲的中间),你可以这样做:
div {
width: 600px;
height: 60px;
position: absolute; 绝对定位的盒子
left: 50%; 首先,让左边线居中
top: 0;
margin-left: -300px; 然后,向左移动宽度(600px)的一半
}
如上代码所示,我们先把盒子做成宽度为600px的框,左线居中,然后将一半的宽度(600px)向左移动,即可实现效果。
我们可以总结成一个公式:
left:50%; -left:负宽度的一半
固定定位
固定定位:相对于浏览器窗口进行定位,无论页面如何滚动,此框显示的位置保持不变。
注意:不兼容 IE6。
用途一:网页右下角“返回顶部”
比如我们经常看到的网页右下角显示的“返回顶部”就可以被修复。
<style type="text/css">
.backtop{
position: fixed;
bottom: 100px;
right: 30px;
width: 60px;
height: 60px;
background-color: gray;
text-align: center;
line-height:30px;
color:white;
text-decoration: none; /*去掉超链接的下划线*/
}
style>
用途 2:顶部导航栏
我们经常会看到导航栏固定在网页的顶部,这个可以通过固定定位来实现。
z-index 属性:
z-index 属性:表示谁按下了谁。较大的值覆盖较小的值。
它具有以下特点:
(1)属性值大的位于上层,属性值小的位于下层。
(2)z-index值没有单位,是一个正整数,默认的z-index值为0。
(3)如果没有一个z-index值,或者z-index值相同,那么如果在HTML代码中把它们写在最后面,谁在最上面谁就占上风。定位元素总是可以压制未定位元素的。
(4)只有定位元素才可以有z-index值。也就是说,不管是相对定位、绝对定位、还是固定定位,都可以使用z-index值。浮动元素不可以使用。
(5)从父现象:如果父亲胆小,儿子再厉害也没用。也就是说,如果父亲1比父亲2年长,那么即使儿子1比儿子2小,儿子1也可以在上面。
对于第(1)(2)(3)项,示例如下:
这是默认的示例:(div2在上层,div1在下层)
现在添加一个z-index属性,需要的效果如下:
第五条分析:
z-index 属性还是比较常用的,当多个定位标签被覆盖的时候,我们可以用这个 z-index 属性来判断哪个在最上面,也就是层级应用。
等级:
(1)必须有定位(已移除)
(2)使用z-index控制层级数。
[部分信息来自媒体]
小可爱们,如果这篇内容对你有帮助的话,不妨点个赞支持一下吧!也可以分享给朋友哦
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。