Skip to content

position和float详解 #9

Description

@junfeisu

position的四大常用属性介绍

  1. 定义及特性:
* **static**: 这个是position属性的默认值,就是元素遵从普通文档流的位置布局

* **relative**: 俗称相对定位,是说相对于该元素在**普通文档流中默认的位置进行移动,并没有脱离普通文档流**

* **absolute**: 俗称绝对定位,相对于**该元素的最近的一个非static定位的祖先元素的位置**进行定位,**可以设置外边距margin,并且不会发生坍塌**,设置绝对定位的元素会脱离普通文档流,在普通文档流里面不会占据空间

* **fixed**: 相对于**浏览器屏幕视窗定位,不会随着屏幕的滚动而改变位置**,会脱离普通文档流,在普通文档流不占据空间
  1. 造成的影响以及一些具体特点:
* 对display属性的影响:
      1. **display**: relative**不会改变**元素的display属性,但是**fixed和absolute会改变**元素的display属性,**行内元素**的display会被改成block属性,当然如果**行内元素**的display属性设置了**block,inline-block, table**等值的话,就**不会改变元素的display属性**,这里插播一句float也会改变display属性,和absolute差不多,具体测试的话可以自己通过**widnow.getComputedStyle()**这个API来得到计算后的各个属性的值

      2. **z-index**: 在IE6/7中,z-index属性会失效

* 基于盒模型(margin, border, paddind, content)的基础解释定位起点:

    absolute: 上面说的是相对该元素的最近的一个非static定位的祖先元素的位置,那么这个位置具体指什么呢?包括该元素的margin? border? padding? 还是什么样的呢?下面看一下代码的演示实例

        .parent {
          margin: 10px;
          padding: 10px;
          border: 5px solid blue;
          background: red;
          height: 100px;
          position: relative
        }

        .child {
          position: absolute;
          left: 0;
          width: 200px;
          height: 20px;
          background: yellow;
        }

        <div class="parent">
          <div class="child"></div>
        </div>

relative的定位起点
从图中可以看出absolute定位的起点就是那个最近的非static的祖先元素的盒模型当中的padding + content的左上角,不包括该元素的margin, border

float

  1. float的定义:是一个元素脱离普通文档流,导致父元素获取不到他的高度,然后被安放在容器的左边或者右边,其他的行内元素和文本围绕这个元素,一开始float就是被用来让文本环绕图片的,而不是用来进行定位布局的

  2. float改变display属性,这点和上面的absolute一样,可以去看上面的

  3. float浮动相对父元素的位置开始浮动是怎么样的?

    .parent {
    margin: 10px;
    padding: 10px;
    border: 5px solid blue;
    background: red;
    height: 100px;
    }

    .child {
    float: left;
    width: 200px;
    height: 20px;
    background: yellow;
    }

结果是这样
从这张图可以看出float相对父元素浮动时是相对父元素的content进行浮动的,也就是说不包括margin, border, padding

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions