打印本文打印本文 关闭窗口关闭窗口

布局模型(5)混合布局中的浮动模型与流动模型

作者:yahu 来源:本站原创 发布时间:2008年10月09日

  在这一章中,我们重点来探讨一下将浮动模型与流动模型进行混合布局,以探究在混合布局中这二个模型之间的关系,应用前面所讲的浮动模型与流动模型的原理来分析出现的相关问题及处理方法。在理解了浮动模型与流动模型的布局原理后,在结合实际问题来进行分析和解决,相信在思路与认识上都会有个质的飞跃。

一、上浮动模型、下流动模型

  若在布局结构中,若一个容器中既有浮动模型又有流动模型,则要注意浮动模型与流动模型的对象处于二个不同层面中的问题。
  我们在一个区块里面添加几个区块,其中在上面设置一个浮动模型(<div class="floatl">、<div class="floatr">),紧接着下面跟着一个或多个依据流动模型布局的块级元素(<H4>、<p>),看看其效果是如何:


提示:您可以先修改部分代码再运行

  在上述<div class="block">容器中,我们放置了二组浮动模型与流动模型的布局:
  浮动于左侧的<div class="floatl">在<h4>标题块级元素的前面;
  浮动于右侧的<div class="floatr">在<p>行级元素的前面。

  我们可以看到,在结构上浮动模型若在流动模型的前面,浮动模型与流动模型的对象则处于二个不同层面中,因此红色边框的浮动模型(<div class="floatl">、<div class="floatr">)飘浮在块级元素<h4>的蓝色边框容器和<p>的灰色区块容器的上层,从而形成了二个不同的层。浮动模型虽然与流动模型不在一个层面上,但是浮动模型的顶部会始终停留在其书写结构的起点位置:

1、浮动于左侧的<div class="floatl">在<h4>标题块级元素的前面:

  从下图中可以看到,因<div class="floatl">区块是父容器<div class="block">中第一个结构元素,同时<div class="floatl">区块浮动于左侧成为浮动模型,因此位置从父容器(<div class="block">)的左上角原点出发进行布局。同时因为浮动模型与流动模型处于二个层面,因此流动模型<h4>不理会浮动模型"floatl"的位置,也从父容器(<div class="block">)的左上角原点出发进行布局,因此浮动模型"floatl"和流动模型<h4>左上角的原点位置相同:

2、浮动于右侧的<div class="floatr">在<p>行级元素的前面:

  从下图中可以看到,<div class="floatr">区块的结构位置在<h4>的下方,当<div class="floatr">浮动于右侧成为浮动模型时,因此位置从上一个区块容器(<h4)下面的右下侧开始布局。同时因为浮动模型与流动模型处于二个层面,因此流动模型<p>不理会浮动模型"floatr"的位置,也从上一个区块容器(<h4)下面的右下侧开始布局,因此浮动模型"floatr"和流动模型<p>右上角的原点位置相同。

3、浮动模型影响流动模型中包含的文档流

  标题元素<h4>、块级元素<p>都是流动模型,其包含的文字内容按文档流的规则进行流布局的同时,受流动模型的影响,自动挪让出浮动模型的宽度,并依据从左到右、自上而下的文档流规则进行流动布局。当文字内容超出了浮动模型的高度时,则自动填充位置形成环绕效果。

  不过要注意的是,这里只是一个模型元素对另一个模型元素中直接的文档流的影响,而模型元素本身里面所包含的内容不会相互影响。即<div class="floatl">、<div class="floatr">中的图片的位置(浮动模型元素里面所包含的内容),不会影响<h4>、<p>里面的内容。

4、浮动模型(子元素)与流动模型(父容器)的边界问题

  浮动模型的顶部虽然会始终停留在其书写结构的起点位置,但与流动模型不在同一个层,因此流动模型的父容器无法完全包含浮动模型的子元素,最直接的影响就是流动模型的父容器不会随着浮动模型的子元素的高度自动撑开(除非父容器也是浮动元素,但这往往不是我们想要的),也就是我们常碰到的浮动的子元素不会撑开父元素的背景、高度的问题。

  解决这个问题的方法,就是在浮动元素的子元素下方加上 CSS 的清除定义 clear: both;(如在子元素下方加上区块<divclass="clearbox"></div>),或者是指定父容器(overflow:hidden; )包含子元素。具体请参阅《清除浮动的一般解决方案》一文。

  关于这个边界的问题,我们在下节“两个包含浮动模型的流动模型”示例中会进一步以实例进行探讨。请继续往下阅读吧。

共2页 您在第1页 首页 上一页 1 2 下一页 尾页 跳转到页 本页共有6850个字符
打印本文打印本文 关闭窗口关闭窗口