position:relative/absolute 都可以激活left、top、right、bottom和z-index属性,
默认情况下所有元素都是在z-index:0,这一层,即文档流。
当设置position:relative/absolute元素会浮起来,z-index大于0, relative会保留其在z-index中的位置,而absolute则会完全脱离文档流。absolute的left、top之类的属性是相对于自己最近的一个设置了relative或者absolute的祖先元素,如果找不到,则相对于body.
float也是可以改变文档流的,但是它不会让元素浮起到另外一个z-index层,它让元素仍然保持在z-index:0层,它是无法通过left、right属性来准确控制元素坐标的,而是通过float:left或者float:right控制元素在同层的左浮动或者右浮动。同时,float会改变正常的文档流排列,影响到周围元素。
在布局的时候 使用 position: relative
之后,尽量不要用 top, left, right, bottom
等属性去指定它的位置,因为它在文档流中的位置没有被释放,很容易造成其他元素排列布局不对的问题。position: relative
更多的是用在,它的 子元素 需要固定在 它 的哪个位置显示时用的。
布局和渲染。布局是指,在当前样式设置下,由浏览器计算得到的页面各元素的位置。渲染是指,最终在浏览器内呈现为可视内容的情况,是一种视觉效果。它们都由浏览器实现,布局计算在前,视觉渲染在后。margin-top
来实现位置偏移,是修改了布局。而·position: relative
+ top
的组合实现位置偏移,并不修改布局,而是修改渲染,是一种单纯的视觉效果,这种方式也常会带来和相邻元素重叠的情况
<textarea>固定大小 resize:none;