CSS中有三种基本形式的布局机制:普通流、浮动和绝对定位。利用定位可以准确定义元素的位置,或者是元素相对于其父元素、另一个元素、浏览器窗口的位置。
HTML代码:
<div class="box1">
div>
CSS代码,添加left和top前:
.box1{
width: 300px;
height: 50px;
position:static;
background-color: paleturquoise;
margin:20px auto;
}
.box1{
width: 300px;
height: 50px;
position:static;
background-color: paleturquoise;
margin:20px auto;
top:200px;
left:200px;
}
<div class="box1">
div>
没添加top和left之前:
.box1{
width: 300px;
height: 50px;
position:relative;
background-color: paleturquoise;
margin:20px auto;
}
<div class="box1">
div>
<div class="box2">
div>
CSS:
.box1{
width: 300px;
height: 50px;
background-color: paleturquoise;
margin:20px;
position: absolute;
}
.box2{
width: 300px;
height: 50px;
background-color: #437aee;
}
元素的位置 相对于浏览器窗口是固定位置 , 即使窗口是滚动的它也不会移动。
基于用户的滚动位置来定位。
粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。
它的行为就像 position:relative;
而当页面滚动超出目标区域时,它的表现就像position:fixed;,它会固定在目标位置。
HTML:
<div class="sticky">我是粘性定位!div>
<div style="padding-bottom:2000px;background-color: #b9d1ee">
<p>滚动我p>
<p>来回滚动我p>
<p>滚动我p>
<p>来回滚动我p>
<p>滚动我p>
<p>来回滚动我p>
div>
css:
.sticky {
position: -webkit-sticky;
position: sticky;
top: 0;
padding: 5px;
background-color: #83dde8;
border: 2px solid #3da0af;
}
包含块:是视觉格式化模型的一个重要概念,与盒模型类似,也可以理解为一个矩形。作用是为它里面包含的元素提供一个参考,元素的尺寸和位置的计算往往是由该元素所在的包含块决定的。
1、根元素:
根元素的包含块是一个视窗大小的矩形,即HTML的父级document。
2、非根元素:
如果position是relative或者static,包含块由最近的元素的内容边界构成。
HTML:
<div class="box1">
<div class="box2">
box2
div>
div>
CSS:
.box1{
background-color: paleturquoise;
margin:20px;
padding:20px;
height: 200px;
}
.box2{
width: 300px;
position: relative;
background-color: #b9d1ee;
padding:20px;
}
如果是position值是absolute,包含块设置为最近的的position的值不是static的祖先元素。
HTML:
<div class="box1">
<div class="box2">
box2
div>
div>
css:
.box1{
background-color: paleturquoise;
margin:20px;
padding:20px;
height: 200px;
}
.box2{
width: 300px;
position: absolute;
background-color: #b9d1ee;
padding:20px;
}