绝对定位的特性
包裹性
跟float
一样,absolute
也具有包裹性,两者的包裹性都类似于使元素inline-block
化.
破坏性
相对于float
引起父元素塌陷,absolute
要更进一步,上面的例子就可以看出,absolute
元素完全脱离文档流,并且被其它盒子以及盒子内的文本无视
absolute替代方案
由于absolute
滥用会降低扩展性和维护性,所以需要尽量少使用absolute
通过给span
标签设置一个div
,设置div
的margin
实现
这个案例有三个图标覆盖,第一个hot图标使用absolute
+margin
,设置margin
调整位置紧紧跟随header
导航最后一个导航链接字体;第二个使用元素脱离文档流,后面的图片直接无视absolute
的原理实现重叠;第三个vip图标设置absolute
属性后,位置跟原先的位置一样,也就是在图片的后面紧紧跟随,然后设置margin-left
图标宽度的负值就可以完成图标覆盖,这里需要注意的一点是为了保证图片和图标之间没有空隙,需要在它们之间设置注释<!-- -->
这个案例我们主要利用的是absolute
的跟随性,配合margin
使搜索结果定位到搜索框下边框
第一个例子是图片居中对齐,父元素设置text-align:center
,子元素由于是inline-block
元素,所以会居中,为了兼容IE浏览器,需要在图片前面设置 
,因为 
需要占据0.25em
所以我们在父元素设置letter-spacing:-.25em
第二个例子是右下角边缘对齐,父元素设置text-align:right
,子元素设置position:fixed
固定定位,并且需要display:inline
为了防止错位
第一个例子是让星号绝对定位,然后它脱离文档流,不占用任何空间,所以后面的文字对齐就不受影响
第二个例子图标使用绝对定位,然后让小图标做偏移图表宽度,这就实现了图文对齐
第三个例子是文字溢出,使用无依赖绝对定位,文字不断行
absolute与width/height
这个例子使用绝对对位元素left: 0; top: 0; right: 0; bottom: 0;
可以实现宽高百分之百的拉伸特性,父元素设置inline-block
具有包裹性,我们在这里设置的半透明遮罩层可以完美覆盖图片
一般情况下,父级容器设置height:auto
,子元素不能使用百分比高度,这时,子元素设置left: 0; top: 0; right: 0; bottom: 0;
利用绝对元素拉伸特性,也可以使用百分比高度
同时设置left/right
与width
起作用的会是width
,这时候再使用margin-left/margin-right:auto
会使绝对定位水平居中,垂直居中同理,这也就是使用absolute
的水平垂直居中的原理
这个例子的实现思路是设置一个width:100%;height:999em
的空绝对定位元素,放在侧边栏,给侧边栏添加position:relative
限制,然后在绝对定位元素同级放置一个设置position:relative;z-index:1
元素包裹住图片,把图片都设置为display:block
,最后把容器设置overflow:hidden
实现原理是由于绝对定位元素无高度特性无宽度特性,我们可以伪造一个高度足够高的绝对定位层,同时设置父元素溢出隐藏,那么其多出来的高度就不会显示了,也就实现了看上去的等高布局效果
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。