position:absolute relative

设置position属性值为 absolute 会将对象拖离出正常的文档流绝对定位,而不考虑它周围内容的布局。假如其他具有不同 z-index 属性的对象已经占据了给定的位置,他们之间不会相互影响,而会在同一位置层叠。
TRBL属性(TOP、RIGHT、BOTTOM、LEFT)
当设定position:absolute 如果父级(无限)没有设定position属性,那么当前的absolute则结合TRBL属性以浏览器左上角为原始点进行定位 如果父级(无限)设定position属性,那么当前的absolute则结合TRBL属性以父级(最近)的左上角为原始点进行定位。
当设定position: relative 则参照父级(最近)的内容区的左上角为原始点结合TRBL属性进行定位(或者说相对于被定位元素在父级内容区中的上一个元素进行偏移),无父级则以BODY的左上角为原始点。相对定位是不能层叠的。在使用相对定位时,无论元素是否进行移动,元素依然占据原来的空间。因此,移动元素会导致它覆盖其他框。

举例:

<div class="parent">
    <div class="list">
        <span class="text">最不喜欢吃的蔬菜</span>           
    </div>
    <div class="list">
        <span class="icon">X</span>
        <span class="text">白菜</span>
    </div>
    <div class="list">
         <span class="text">土豆</span>
    </div>
    <div class="list">
         <span class="text">西红柿</span>
    </div>
<div>

如果需要实现这样一个菜单,菜单前面有x作为标记,白菜和土豆要对齐,那么就需要icon不能进行按照流式布局,这样我们就需要使用绝对定位position:absolute,但是一旦这样定位后,icon就乱跑,以body为参照绝对定位了,不在白菜这一行,那么我们就可以将list的position:relative,父元素设置position后,就可以让icon以父元素作为参照,icon就在白菜这一行了。最后只要修改列表文字的padding-left参数让文字前面留出空白.
以下是完整css

<style>
.parent{
    background-color:#ccc; 
    width:200px;
}
.list .text{
padding-left:20px;
}
.list{
position:relative;
}
.icon{
position:absolute;
}
</style>

效果图:


屏幕快照 2016-08-31 下午4.19.29.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,865评论 1 92
  • CSS的position总是属性很容易让人弄混~ 为了仔细区别它们,所以今天总结一下CSS的position属性~...
    fehysunny阅读 2,999评论 0 7
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,277评论 0 1
  • 這是誰的杯子我想我知道。 儘管他的房屋在村子裡里; 他不會看到我在這兒停下 觀看他的杯子積满雪花。 我的小馬定會覺...
    东丰林波阅读 171评论 0 0
  • 你是北方归鸟 我是南方良鱼 ...
    富士山下L阅读 365评论 1 2