zoukankan      html  css  js  c++  java
  • CSS布局之浮动布局

    布局(layout),指各个元素在网页里如何摆放以形成最终的页面,默认布局是从左到右从上到下。改变元素的默认布局方式有很多种,浮动(float)就是其中一种。

    1. 浮动(float)

    浮动类似于word里面文字围绕图片的效果,可设置为向左(left)向右(right)浮动。

    // 元素默认没有浮动效果
    float: none;
    // 向左浮动
    float: left;
    // 向右浮动
    float: right;
    
    1.1 浮动元素的盒模型

    普通元素有文档流(即上面提到的默认布局),浮动元素页游浮动流,即浮动元素会跟随浮动元素浮动。

    // 1.宽度和高度
    浮动元素的宽高由内容撑开
    // 2.内边距
    浮动元素可正常设置内边距
    // 3.边框
    浮动元素可正常设置边框
    // 4. 外边距
    浮动元素可正常设置外边距,且外边距不会重叠。
    

    1.1 包含块的包裹性

    距浮动元素最近的块级元素称为包含块,浮动元素不会超出包含快的上、右、左边界,但可以超出元素的下边界。

    // 包含块也浮动时,包含块的宽度和高度由子元素撑开
    

    想让浮动元素超出父元素边界有2中办法:1.浮动元素宽度大于父元素宽度;2. 浮动元素设置负外边距,但会与其他正常元素重叠。

    // 如果浮动元素设置负外边距,与其他元素重叠时会有如下情况:
    
    // 1. 浮动元素与行内元素重叠:
    行内元素的边框、背景和内容,都在浮动元素之上
    // 2. 浮动元素与块级元素重叠
    块级元素的边框、背景在浮动元素之下,内容在浮动元素之上
    

    1.3 浮动元素的破坏性

    浮动元素会造成父元素的高度塌陷,即当只有1个浮动元素且父元素未设置高度时,父元素的高度为0;

    解决父元素的高度塌陷就要清除浮动,有2种办法:

    1.3.1 在浮动元素后,添加新元素并设置clear属性

    // 直接设置新元素清除浮动
    .clear { clear: both; }
    // 使用after伪类
    .clear::after { 
        content: '';
        display: block;
        clear: both; 
    }
    

    1.3.2 触发包含块的BFC

    // 设置float属性为left或right
    .fl { float: left; }
    // 设置position属性为fixed或absolute
    .fx { position: fixed; }
    // 设置display属性为inline-block/table-cell/table-caption/flex
    .hd { display: flex; }
    // 设置overflow属性不为visible
    .ov { overflow: hidden; }
    
  • 相关阅读:
    Java网络编程
    loj#6517. 「雅礼集训 2018 Day11」字符串(回滚莫队)
    bzoj4241: 历史研究(回滚莫队)
    洛谷P5050 【模板】多项式多点求值
    loj#6053. 简单的函数(Min_25筛)
    【BZOJ4144】[AMPPZ2014]Petrol(最短路+最小生成树+并查集)
    51nod 1781 Pinball(线段树)
    CF1110D Jongmah
    CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)
    20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/juetan/p/13210391.html
Copyright © 2011-2022 走看看