前端孵化日记(二)浮动

206 阅读2分钟

什么是浮动

  浮动初衷是为了实现字围(新闻),后面才发现,浮动可以让多个男标签并排显示。浮动默认的流式布局无法实现元素并排,此时引入浮动的概念。
基本格式:float: left / right / none

浮动的特点

  1. 在一个父元素内部,如果一个元素浮动了,那么它就脱离了标准文档流,后面的元素就让向上排
  2. 浮动并没有完全地脱离了标准文档流,如果后面的元素内部有文字,这些文字会环绕在浮动元素的周围,产生字围。
  3. 如果多个元素浮动了,那么这们就会并排显示,如果都是同一个方向的浮动,它们会紧紧地贴在一起。
  4. 如果一个元素浮动了,先向上移动,直到贴靠到父元素的边界,接着,如果是左浮动,就向左移动,直到移动到父元素的左边界,如果是向右浮动,就向右移动,直接移动到父元素的右边界。
  5. 如果一个元素没有设置高度,它的高度是靠里面的内容撑起来的。如果父元素内部元素都浮动了,那么会造成父元素的高度塌陷。
  6. 如果元素浮动了,那么它会造成影响:造成父元素高度塌陷。解决:显示加高度(加高法) 小偏方(overflow:hidden)
  7. 如果元素浮动了,它也会造成对后面的兄弟元素影响。解决:clear:both/left/right
  8. 应用:实现左右布局小导航多个规则盒子水平排列(行内块)
    <style>
        .father {
            border: 4px solid black;
            width: 300px;
            margin: 50px auto 0;
            overflow: hidden;
        }
        .son {
            width: 100px;
            height: 100px;
            float: left;
        }
        .son:nth-of-type(1) {
            background-color: red;
        }
        .son:nth-of-type(2) {
            background-color: green;
        }
        .son:nth-of-type(3) {
            background-color: skyblue;
        }
    </style>
    <div class="father">
        <div class="son">老大</div>
        <div class="son">老二</div>
        <div class="son">老三</div>
    </div>

  1. 当一个浮动起来的行内元素,没有设置width,那么这个盒子的宽高会尽可能小,小到包裹住它里面的内容,这叫包裹性

  2. 如果一个行内元素浮动了,那么就可以设置宽高了,相当于把它变成块级元素。

  3. 如果父元素也浮动了,那么就不会出现高度塌陷了。

  4. 如果有左浮动,又有右浮动,那么你需要把右浮动的元素写在左左浮动的前

  5. 浮动元素会从标准文档流中半脱离出来。证明:字围

  6. 一个元素浮动了,那么它也是受父元素的控制。当父元素宽度变小时,装不下所有的子元素时,后面的子元素有贴靠性。当父元素小到极限时,里面的浮动的子元素宽度是不会改变的。