position:static|relative|absolute|fixed
大家下面示例代码先放在浏览器上跑,感性认识一下
static 默认值 (你啥都没有设置的时候就是默认值)没有脱离文档流
relative
设置了relative的元素会相对于自身原来在文档流的位置进行定位,不会影响其他元素的位置,
<style>
* {
padding: 0;
margin: 0;
}
body {
height: 100%;
}
ul,
li {
list-style: none;
}
.item {
border: 1px solid red;
margin-top: 10px;
background-color: aqua;
}
</style>
</head>
<body>
<ul>
<li class="item">我是第1项</li>
<li class="item">我是第2项</li>
<li class="item">我是第3项</li>
<li class="item" style="position: relative;top:20px;left:20px;">我是第4项</li>
<li class="item">我是第5项</li>
<li class="item">我是第6项</li>
</ul>
</body>
absolute
设置了 top、left 值时,元素是相对于最近的定位上下文来定位的(定位上下文这玩意儿下文解释)
脱离文档流了, 导致父元素坍塌了
包裹性:p元素宽度本来是整个屏幕的宽度,现在只是内容的宽度
<style>
* {
padding: 0;
margin: 0;
}
ul,
li {
list-style: none;
}
.item {
border: 1px solid red;
margin-top: 10px;
background-color: aqua;
}
</style>
</head>
<body>
<ul>
<li class="item">我是第1项</li>
<li class="item">我是第2项</li>
<li class="item">我是第3项</li>
<li class="item" style="position:absolute;left:20px;top:20px;">我是第4项</li>
<li class="item">我是第5项</li>
<li class="item">我是第6项</li>
</ul>
</body>
fixed
相对于浏览器的窗口的位置来定位的
<style>
* {
padding: 0;
margin: 0;
}
body {
height: 100%;
}
ul,
li {
list-style: none;
}
.item {
border: 1px solid red;
margin-top: 10px;
background-color: aqua;
}
.container {
border: 2px solid black;
}
</style>
</head>
<body>
<ul class="container">
<li class="item">我是第1项</li>
<li class="item">我是第2项</li>
<li class="item">我是第3项</li>
<li class="item" style="position: fixed;top:20px;left:20px;">我是第4项</li>
<li class="item">我是第5项</li>
<li class="item">我是第6项</li>
</ul>
</body>
影响其他元素的排列
https://github.com/suckitfa/css-position
原文:https://www.cnblogs.com/rookie123/p/14642724.html