负边距在普通文档流中的作用和效果
文章https://www.cnblogs.com/2050/archive/2012/08/13/2636467.html
负边距会让元素在文档中的位置发生偏移,但是这种偏移不同于相对定位。
负边距:进行偏移的元素,它会放弃偏移前占据的空间
定位偏移:仍然会坚守它原来占据的空间,不会让文档流的其他元素趁虚而入
文档流只能是后面的流向前面的,即文档流只能向左或向上流动,不能向下或向右移动。
在文档流中,元素的最终边界是由margin决定的,margin为负的时候就相当于元素的边界向里收,文档流认的只是这个边界,不管你实际的尺寸是多少
左和右的负边距对元素宽度的影响
场景:中间需要带间隔的部分需要怎么做
想法:子元素设置margin-right。问题:需要将靠近右边界的子元素的margin-right设置为0
做法:margin-right:-20px 等于是将ul的宽度增加了20px
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body,
ul,
li {
padding: 0;
margin: 0;
}
ul,
li {
list-style: none;
}
.container {
height: 210px;
width: 460px;
border: 5px solid #000;
}
ul {
height: 210px;
overflow: hidden;
margin-right: -20px;
}
/*一个负的margin-right,相当于把ul的宽度增加了20px*/
li {
height: 100px;
width: 100px;
background: #09F;
float: left;
margin-right: 20px;
margin-bottom: 10px;
}
</style>
</head>
<body>
<div class="container">
<ul>
<li>子元素1</li>
<li>子元素2</li>
<li>子元素3</li>
<li>子元素4</li>
<li>子元素5</li>
<li>子元素6</li>
<li>子元素7</li>
<li>子元素8</li>
</ul>
</div>
</body>
</html>
负边距对浮动元素的影响
文档流中元素的位置由文档的走向决定,浮动的元素也可以看成一个“浮动流”存在,不过浮动流既可以向左,也可以向右
relative
该关键字下,元素先放置在未添加定位时的位置,再在不改变页面布局的前提下调整元素位置(因此会在此元素未添加定位时所在位置留下空白)
负边距对绝对定位元素的影响
绝对定位的元素定义的top right bottom left 等值是元素自身的边界到最近的已定位的祖先元素的距离,这个元素自身的边界指的是margin定义的边界,所以,如果margin为正的时候,那它的边界是向外拓的,如果margin为负的时候,则它的边界是向里收的。