浮动布局那些事

296 阅读4分钟

前提

当div中的内容和高度超出了其高度,就会在边框之外显示;而且,如果之后的div还有内容,就会和超出的内容发生重叠。这是溢出

为了解决内容溢出的问题,css提供了一个overflow的属性。

  • overflow:溢出。
  • 作用:用于处理内容溢出的问题。
  • 有四种属性值:
  • visible:表示可见,它是默认值
  • hidden:表示隐藏。 效果如下

  • scroll:生成一个滚动条。 效果如下

  • auto:自动。 效果如下

注意:

产生滚动条之后,width不变,而内容区域随之减少。
overflow还有一个特性,可以解决浮动造成的塌陷问题。

在实际开发中,在使用overflow的时候,最常用的一个设置如下:

overflow:hidden;

浮动布局

1.浮动的基本使用 图文环绕,实现网页布局。
使用:float:属性值

  • 常用的属性值有两个:left,right

浮动的特点:三大特征

  • 包裹性:如果一个块级元素,在没有设置width的情况下(前提条件),一旦使用了float,那么他的width就会发生变化,尽量最小,能够完全包裹其中内容即可。

    如果我对一个块级元素已经设置了width,则不会具备包裹性。

  • 破坏性:在一个块级容器中(如div),如果它的子元素,都有浮动(比如float),并且没有清除这个浮动,那么块级容器将会塌陷。这就是浮动的破坏性。


    如何解决由于破坏性导致的塌陷问题呢?
    技巧,有如下几种方式:
    1.在块级容器中,使用overflow:hidden就可以,如图:
    在块级容器结束之前,添加一个空的div标签,然后设置clear:both的属性,就可以,如图:

    显式的给块级元素指定一个height值,如图:
    针对第三种解决方案,并不适用,因为对于大部分页面来说,一个容器其高度最好设置为自适应的,不推荐使用。

  • 块级域:如果一个行内元素,设置了浮动(left或right)之后,它就会变成块级框,就可以设置其盒模型的所有属性,如width和height。

最经典的就是给a标签加浮动。

浮动的具体表现:


关于规则1的说明
第一小条:浮动元素的左(右)外边界不能超出其包含块的左(右)边界

第二小条:一个浮动元素的顶端不能比父元素的内顶端更高。

规则3:元素不能一直浮动到其父元素的顶端。

浮动的本质

在css中,所有的内容都是一个元素。纯文本也是。
在块级元素中,包含的一定是行内元素,行内元素才是描述内容的标签。

行内元素的特点:

  • 首先自左至右进行排列,
  • 如果内容超出一行,会重起一行
    如果一个行内元素不止一行,则会形成多个行内框。每一行就是一个框。(是矩形的)

有一个概念,就是正常文档流,

只要是流动布局,所有的内容都是属于正常文档流的。

如果使用了浮动布局,使用了float之后,那就不一样了。

浮动之后,它会脱离正常的文档流,但是不是完全脱离,还是会影响内容的。

如果对图片进行浮动,那么图片就会脱离正常的文档流,所以后面的段落就会占据图片的空间。

由于浮动并不是完全脱离文档流的,所以浮动的元素还是需要占据空间,这个空间是不会被其它内容占据。

关于浮动的清除,使用clear既可以了。

如果是解决父元素塌陷的问题,使用overflow:hidden就可以。

如果是其它情况,就需要使用clear:both。

display详解

  • display:显示的意思
  • 作用:用来设置元素的显示形态
  • 格式:display:属性值
    其中,属性值有如下几个:
  • block,块
  • inline,行内
  • none,隐藏
  • inline-block,行内快。

dislay就像是做变性手术。

注意点:
none,表示不显示当前的元素,当设置为none,完全不占据页面的任何空间。
inline-block:将元素设置为行内块元素

但是,很遗憾的,inline-block在ie7以下支持不好。需要使用兼容的写法。