绝对定位absolute

absolute包裹性
float是个带有方位的display:inline-block属性,absolute也是个inline-block化属性。

在一个空div中添加一张图片,可以看到图片位居div左侧,而此时div的长度为100%

Paste_Image.png

现在我们给div添加position:absolute; padding:5px; 发现div的宽度变窄了并且包裹在图片四周,这时div的高和宽是自适应,会随着图片的大小变化而变化,absolute具有包裹性,同样的float 也具有包裹性
当把position:absolute;修改为float:left;发现效果和absolute是一样的
absolute与float的包裹性等同于inline-block属性,不同的是float具有方向性,而inline-block是水平排列

Paste_Image.png
        <style type="text/css">
              .abs{
                    background: #ADADAD;
                  padding: 5px;
                    position: absolute;
              }
        </style>

absolute致使父元素的高度塌陷
绝对定位的元素脱离了文档流(不占据之前的空间),而浮动元素依旧在文档流中浮动(依然占据之前空间)

当我们给空div添加一张图片,只给div设置padding:20px;然后给图片设置position:absolute;会发现div的高度只有padding这20px,并没有根据图片的高度自适应,absolute使图片脱离文档流,使它在div中不占据空间,所以父元素div的高度发生了塌陷,同样的我试了下将图片的position:absolute;属性设置为float:left;发现具有同样的特性致使父元素div的高度塌陷。

Paste_Image.png

对于float导致的父元素div塌陷,我们根据图片大小给父元素div设置了一个高度大小 从而再次使得div包裹图片

Paste_Image.png

但是存在缺点,就是这个高度是固定的,如果我们想添加多个图片,多的使得图片产生自动换行显示,那么这个高度又需要修改,这里有一个方法就是让div高度自适应它们的高度,删除原先的父元素div固定height,给父类元素div设置属性overflow:hidden;

Paste_Image.png

可以看到div自动适应高度

Paste_Image.png
        <style type="text/css">
              .abs{
                    background: #ADADAD;
                  padding: 20px;
                    overflow: hidden;
              }
              div img{
                    float: left;
              }
        </style>

absolute跟随性
给元素设置position:absolute;是元素具有跟随性,例如在同一个div中,存放三张图片,都不设置任何属性的时候,他们水平排列着。

Paste_Image.png

给第二张图片设置一个绝对定位(position:absolute;)属性可以发现,第三张图片紧靠在第一张图片后面,而第二张图片漂浮到了第三张图片上面(第二张图片脱离了文档流,并且不占空间),并且还是紧靠在第一张图片后面,这就是绝对定位的跟随性

Paste_Image.png
       <style type="text/css">

            .qq{
                 width: 200px;
                 background: #adadad;
            }
            .close{
                 width: 50px;
                 position: absolute;
            }
            .wx{
                 width: 200px;
                 background: #ADADAD;
            }
       </style>

absolute的无依赖性
absolute的无依赖性,就是不依赖relative的限制来进行定位 首先先演示下父类元素设置relative下的定位,首先要给父类元素设置relative,子元素使用absolute 配合left,top进行定位,这里的left和top根据父类元素进行定位

Paste_Image.png
            .box{
                 position: relative;
            }
            .qq{
                 width: 300px;
                 background: #adadad;
            }
            .close{
                 width: 50px;
                 position: absolute;
                 left: 250px;
                 top: 0;
            }

这种方法给右上角图标进行定位的缺点是要有relative来限制absolute,如果不给absolute的父元素添加relative,那么absolute的元素就会根据body进行定位,当图片改变大小的时候,右上角图片就需要重新定位。比如当把图片变小,右上角的图片就显示在了偏右的位置,小图片依旧保持在left:250px;的位置,这就需要重新给小图片进行定位。

Paste_Image.png

如果使用margin配合absolute进行小图片的定位,就可以脱离父级元素relative的限制,实现无依赖定位,同样是上面的例子,现在取消父级元素relative的属性,使用margin进行定位

Paste_Image.png
        .qq{
                 width: 200px;
                 background: #adadad;

            }
            .close{
                 width: 50px;
                 position: absolute;
                 margin-left:-50px ;
                 margin-top: 0;

            }

使用margin和absolute配合进行定位,无论图片怎么改变大小,小图标始终定位在企鹅的右上角,不会偏离位置。

Paste_Image.png

absolute的容器拉伸特性
absolute具有拉伸容器大小的特性,例如要实现一个距右边距200px的容器,可以设置容器属性position:absolute;left:0;top:0;right:200px;
这里容器没有设置高度,就使用一张图片撑开它

Paste_Image.png

absolute不但可以拉伸容器,也可以拉伸内部元素,如果内部元素设置固定的长高,绝对定位是不能拉伸它的,当内部元素设置为百分比时,内部元素会随着外部容器的拉伸而拉伸。

            .box{
                 position: absolute;
                 left: 0;
                 top: 0;
                 right: 200px;
                 background: aquamarine;
            }
            .pic{
                 width: 30%; /* 图片设置百分比*/
            }
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,705评论 1 92
  • 之前介绍过CSS浮动float详解,本篇介绍的绝对定位absolute和浮动float有部分相似性。如果能理解浮动...
    张歆琳阅读 96,547评论 39 192
  • 学习建议 定位、浮动是 CSS 核心知识点,必须熟练掌握。 1.文档流的概念指什么?有哪种方式可以让元素脱离文档流...
    饥人谷_任磊阅读 1,050评论 0 3
  • 在CSS中关于定位的内容是:position:relative | absolute | static | fix...
    feelinghappy618阅读 624评论 0 0
  • 一 外部式css样式 (也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css...
    KunMitnic阅读 919评论 0 1