zoukankan      html  css  js  c++  java
  • KO掉绝对相对布局,现在轮到浮动布局(深入理解)

    网页的布局就分为两大类,第一类就是position,也就是相对布局和绝对布局这一种,还有另外一类是浮动布局,刚不久之前做了个position布局,在这里不写了,现在来讨论下浮动布局更深层次的理解,基本的入们浮动布局在百度有一大堆呢。

    首先,我们应该知道哪些是块元素,哪些是内联元素。

    块元素:div ul li table form等等很多

    内联元素: input span  strong img a p  b等等吧

    在这里先介绍下“文档流”这个概念

    将窗体子自上而下分成一行行,并在每行中按从左至右的顺序排放元素,即为文档流。每个非浮动块级元素都独占一行,浮动元素则按规定浮动在行的一端,若当前行容不下了,则另起一行继续浮动

    内联元素也不会独占一行。

    有三种情况将使得元素脱离文档流而存在,分别是浮动,绝对定位,固定定位,但是在IE浮动元素也存在于文档流中。

    浮动元素不占任何正常文档流空间,而浮动元素的定位还是基于正常的文档流,然后从文档流中抽出并尽可能远的移动至左侧或者右侧。文字内容会围绕在浮动元素的周围。当一个元素从正常文档流中抽出后,仍然在文档流中的其他元素将忽略该元素并填补他原先的空间。

    基于文档流,我们可以很容易理解一下的定位模式:

      • 相对定位,
        即相对于元素在文档流中位置进行偏移. 但保留原占位.
      • 绝对定位,
        即完全脱离文档流, 相对于position属性非static值的最近父级元素进行偏移
      • 固定定位,
        即完全脱离文档流, 相对于视区进行偏移.

    只要把文档流一拿出来,把文档流里面的机制搞懂了。布局的原理就会出来了。

    不过再这里还是说一下块元素和内联元素之间的区别和转化

    1.可以使用display=block将行内元素转换成块元素,display=none表示生成的元素根本没有框,也不显示元素,不占用文档中的空间。

    2.块元素有行高,width,height,border可言,而内联元素是没有的

    3.内联元素是也叫:内联元素,内嵌元素,行内元素,直进式元素

    忘记补充一点:就是IE中块元素浮动双外边距的bug,只要满足三个条件就会出现:

    1.块元素

    2浮动

    3.有外边距

    所以只要破坏其中之一就可以了。直接display:inline就可以破解了

  • 相关阅读:
    linux分区-df
    day34 协程
    day33 GIL锁 线程队列 线程池
    day32 线程
    day31 管道 进程池 数据共享
    day30 锁 队列
    day29 进程
    day28 socketserver
    day27 粘包及粘包的解决方案
    day26 网络通讯的整个流程
  • 原文地址:https://www.cnblogs.com/fengmitianxia/p/3321248.html
Copyright © 2011-2022 走看看