Day009 (定位属性)
一.position定位属性和属性值
position 定位属性,检索对象的定位方式;
语法:position:static /absolute/relative/fixed
取 值 : \color{red}{取值:} 取值:
1、static:默认值,无特殊定位,对象遵循HTML原则;
2、absolute:绝对定位,将对象从文档流中拖离出来,使用top/right/bottom/left等属性相对其最接近的一个并有定位设置的父元素进行绝对定位;**如果不存在这样的父对象,则依据根元素(html)浏览器页面进行定位,**而其层叠通过z-index属性定义
ps:绝对定位(absolute)
1.absolute相对于其最近有定位的父元素进行定位,如果没有这样的父元素,相对于根元素(html)
2.absolute脱离文本流离层且不占为
这是浮动:文本会被挤出来,因为浮动是脱离半层
这是绝对定位:文本不会挤出来,因为他是脱离一层
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>绝对定位</title>
<style type=text/css>
*{
margin:0;
padding:0;
}
.bigBox{
width:800px;
height:800px;
background:yellow;
margin: auto;
overflow:hidden;
position:relative;
}
.box{
width:500px;
height:500px;
background:skyblue;
margin:50px auto;
}
.box .div1{
width:100px;
height:100px;
background:red;
position:absolute;
/* top:0;
left:0;
*/
*/*上两行为坐标属性*/
z-index:1;
/*绝对定位(absolute)
1.absolute相对于其最近有定位的父元素进行定位,如果没有这样的父元素,相对于根元素(html)
2.absolute脱离文本流离层且不占为*/
}
.box .div2{
width:150px;
height:150px;
background:blue;
position:absolute;
}
.box .div3{
width:200px;
height:200px;
background:green;
position:absolute;
}
</style>
</head>
<body>
<div class="bigBox">
<div class=box>
<div class="div1">1</div>
<div class="div2">2</div>
<div class="div3">3</div>
</div>
</div>
</body>
</html>
3、relative :相对定位,该对象的文档流位置不动,将依据right,top,left,bottom(相对定位)等属性在正常文档流中偏移位置;其层叠通过z-index属性定义
ps:相对定位(relative)
1.相对定位相对于自身的位置偏移
2.相对定位不脱离文档流,但是脱离层
3.原有的位置保留(占位)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>相对定位</title>
<style type=text/css>
*{
margin:0;
padding:0;
}
.box{
width:500px;
height:500px;
background:blue;
margin:20px auto;
}
.box .div1{
width:100px;
height:100px;
background:red;
position:relative;
top:100px;
left:100px;
}
.box .div2{
width:150px;
height:150px;
background:yellow;
position:relative;
}
.box .div3{
width:200px;
height:200px;
background:skyblue;
}
/*相对定位(relative)
1.相对定位相对于自身的位置偏移
2.相对定位不脱离文档流,但是脱离层
3.原有的位置保留(占位)*/
</style>
</head>
<body>
<div class="box">
<div class="div1">div1</div>
<div class="div2">div2</div>
<div class="div3">div3</div>
</div>
</body>
</html>
4、fixed:(固定定位)未支持,对象定位遵从绝对定位方式(absolute、脱离文本流);但是要遵守一些规范(IE6浏览器不支持此定位) (固定定位可以用于让一个元素在浏览器可视窗口垂直居中);
跟绝对定位一样的都是脱离文档流,并且永远相对于当前浏览器的可视窗口进行位置偏移。
二.定位元素的层级属性
z-index : auto |number 检索或设置对象的层级顺序。
auto:默认值。遵从其父对象
number:无单位的整数值。可为负数
没有设置z-index时,结构后写的对象优先显示在上层,设置后,数值越大,层越靠上;
说明:
1)较大 数值的对象会覆盖在较小 数值的对象之上。如两个绝对定位对象的此属性具有同样的 number 值,那么将依据它们在HTML文档中声明的顺序层叠。
此属性仅仅作用于 position 属性值 relative 或 absolute,fixed 的对象。
三.包含块的概念及作用(只有绝对定位有包含块)
包含块是绝对定位的基础,包含块就是为绝对定位元素提供坐标,偏移和显示范围的参照物,即确定绝对定位的偏移起点和百分比 长度的参考;
默认状态下,html是一个大的包含块,所有绝对定位的元素都是根据窗口来定自己所处的位置和百分比大小的显示的,如果我们定义了包含元素为包含元素块以后,对于被包含的绝对定位元素来说,就会根据最接近的具有定位功能的上级包含元素来定位自己的显示位置。
定义元素为包含块:给绝对定位元素的父元素添加声明position:relative;
如果我们的父素设置了position:absolute;那么子元素也会相对父元素来定义自己的位置。
绝对和相对定位的区别:
1、参照物不同,绝对定位(absolute)的参照物是包含块(父级),相对定位的参照物是元素本身位置;
2、绝对定位将对象从文档流中拖离出来因此不占据空间,相对定位不破坏正常的文档流顺序无论是否进行移动,元素仍然占据原来的空间。