zoukankan      html  css  js  c++  java
  • 关于float那些事

    这段时间,作为初学者的我们,一直被Css的各种代码,所烦恼,而我自然也不列外,今天本人就献丑浅谈--浮动”(float),一个我们即爱又恨的属性。爱,因为通过浮动,我们能很方便地布局; 恨,浮动之后遗留下来太多的问题需要解决也许很多人都有这样的疑问,我就总结一下,我的一些经验,抛砖引玉吧。


    一、清除浮动 还是 闭合浮动
    1)清除浮动:清除对应的单词是 clear,对应CSS中的属性是 clear:left | right | both | none;
    2)闭合浮动:更确切的含义是使浮动元素闭合,从而减少浮动带来的影响。

    通过以上实例发现,其实我们想要达到的效果更确切地说是闭合浮动,而不是单纯的清除浮动,在footer上设置clear:both清除浮动并不能解决warp高度塌陷的问题。 
    结论:用闭合浮动比清除浮动更加严谨,所以后文中统一称之为:闭合浮动。


    二、为何要清除浮动?
    要解答这个问题,我们得先说说CSS中的定位机制:普通流,浮动,绝对定位 (其中"position:fixed" 是 "position:absolute" 的一个子类)。
    1)普通流:很多人或者文章称之为文档流或者普通文档流,其实标准里根本就没有这个词。如果把文档流直译为英文就是 document flow ,或者称之为常规流。但似乎大家更习惯文档流的称呼,因为很多中文翻译的书就是这么来的。比如《CSS Mastery》,英文原书中至始至终都只有普通流 normal flow(普通流) 这一词,从来没出现过document flow (文档流)

    2)浮动:浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘。浮动框不属于文档中的普通流,当一个元素浮动之后,不会影响到块级框的布局而只会影响内联框(通常是文本)的排列,文档中的普通流就会表现得和浮动框不存在一样,当浮动框高度超出包含框的时候,也就会出现包含框不会自动伸高来闭合浮动元素(“高度塌陷”现象)。顾名思义,就是漂浮于普通流之上,像浮云一样,但是只能左右浮动。

    正是因为浮动的这种特性,导致本属于普通流中的元素浮动之后,包含框内部由于不存在其他普通流元素了,也就表现出高度为0(高度塌陷)。在实际布局中,往往这并不是我们所希望的,所以需要闭合浮动元素,使其包含框表现出正常的高度。

    三、清除浮动的原理

    1)添加额外标签

    通过在浮动元素末尾添加一个空的标签例如 <div style=”clear:both”></div>,其他标签br等亦可。

    2)使用 br标签和其自身的 html属性
    这个方法有些小众,br 有 clear=“all | left | right | none” 属性。

    3)父元素设置 overflow:hidden
    通过设置父元素overflow值设置为hidden。

    4)父元素设置 overflow:auto 属性。

    5)父元素也设置浮动
    优点:不存在结构和语义化问题,代码量极少
    缺点:使得与父元素相邻的元素的布局会受到影响,不可能一直浮动到body,不推荐使用。

    6)父元素设置display:table。

    7)使用:after 伪元素

  • 相关阅读:
    1003 我要通过! (20 分)
    安装ANSYS19.0的正确方法(附下载)
    多项式最小二乘法拟合
    递归循环嵌套排列组合
    对二维数组使用指针进行操作的探索(C语言)
    统计C语言关键字出现次数
    三次样条插值matlab实现
    绩点换算小程序
    B1020 月饼(25 分)
    问题 B: 分组统计
  • 原文地址:https://www.cnblogs.com/wcq12/p/3655125.html
Copyright © 2011-2022 走看看