static:静态定位是 position 的预设值,元素框正常生成,也就是没有定位时的正常显示。

  relative:相对定位

  用法一:元素相对自身的原位置偏移某个距离,但是原本的空间依旧保留,表现为空白。

  用法二:把一个元素设定为 position: relative; 可以使该元素的子元素相对该元素绝对定位。

  absolute:绝对定位

  元素从文件流删除,并相对于包含块定位。元素在原本的空间关闭。元素定位后生成一个块级框,不论它原来是行内元素还是块级元素。

  包含块:近的 position 值不是 static 的祖先元素 (块级或行内),一般会指定一个元素作为绝对定位元素的包含块,将其 position 设定为 relative 而且没有偏移。

  fixed:固定定位

  元素从文件流删除,并相对于浏览器视窗定位,因此不随文件滚动而移动。元素在原本的空间关闭。元素定位后生成一个块级框,不论它原来是行内元素还是块级元素。与绝对定位的区别仅仅是包含块不同。

  包含块:浏览器视窗。

  absolute/fixed 和 float 对比

  类似:元素都会从文件流删除,但是依旧会影响布局; 都会生成一个块级框,无论原来是不是块级元素。

  区别:float 的包含块是近的块级祖先元素。

  偏移属性:top/right/bottom/left,初始值是 auto 。

  采用 position 定位之后必须采用偏移属性定义偏移量,也就是相对包含块的偏移。注意应用于 position 值不是 static 的元素。

  有时也需要定义 width 和 heigth,但是可能会和偏移属性的定义冲突,因为四个偏移属性实际上已经定义了元素的大小。此时,根据 width 和 left 属性定义左右,根据 top 和 height 属性定义上下。

  内容溢位 overflow: visible/ hidden/ scroll /auto/ inherit,初始值是 visible 。

  一个元素的大小固定,但是其内容放不下,就会导致溢位。 overflow 控制溢位部分的可见 (visible) 、不可见 (hidden) 、滚动可见 (scroll) 。

  元素可见性 visibility: visible/ hidden/ collapse/ inherit,初始值是 visible 。

  visibility:hidden 和 display:none 的区别:visibility:hidden 设定元素不可见,但是元素依旧会影响布局,只是元素部分呈现为空白;display:none 元素不显示并且从文件流中删除,对文件布局没有任何影响。