论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > div+css教程
Tag:css,入门,技巧,div,实例,示例,菜单,布局,web2.0,ul,li,经验,列表,web标准,xhtml,web标准,浏览器,兼容,css hack,表格,视频教程

div+css教程_Css3 弹性盒模型

文章类别:div+css | 发表日期:2011-4-29 9:30:07

div+css教程_Css3 弹性盒模型

 

div+css视频教程共三课,57集。由“21视频教程网www.21shipin.com 精心打造,每个知识点都对应着实例进行贯通巩固,并提供了对应实例的源码示例下载,及作业的讲解视频,老师答疑等;
   视频教程内容主要包括:web,Css语法基础及代码瘦身,div+css布局实例讲解,xml+css布局的讲解等。

课程总目标 课程目标 Web标准概论
Web标准中标记应用思路 检测网站符合web标准 学习div+css的相关学习工具
xhtml语法及与html区别 div标签 Dreamweaver中css的使用
新建CSS规则面板的介绍 css类型面板介绍 css背景面板介绍
css区块面板介绍 css方框面板介绍 css边框面板介绍
css列表面板介绍 Div+css布局流程 Div+css布局实例操作-切片
布局实例操作-定义布局层 布局实例操作-逐步定义每个层(body) 布局实例操作-逐步定义每个层(top)
布局实例操作-逐步定义每个层(contents) 布局实例操作-逐步定义每个层(left) 布局实例操作-逐步定义每个层(foot)
布局实例操作-逐步定义每个层(left) 布局实例操作-逐步定义每个层(main) 布局实例操作-逐步定义每个层(right)
定义全文文字样式 定义指定层里文字样式(使文字垂直居中) 定义标题样式(h1,h2,h3,h4)等
定义全页链接样式 定义指定层里链接样式 定义ul的项目符号
导航栏设置1 导航栏设置2

 

我们来介绍一下Css3 弹性盒模型。Css3引入了新的盒子模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间。这与XUL(火狐使用的用户交互语言)相似,其它语言也使用相同的盒模型,如XAML 、GladeXML。

使用该模型,可以很轻松的创建自适应浏览器窗口的流动布局或自适应字体大小的弹性布局。本文的例子使用以下的HTML代码:

view sourceprint?
1.<body>
2.  <div id="box1">1</div>
3.  <div id="box2">2</div>
4.  <div id="box3">3</div>
5.</body>

传统的盒模型基于HTML流在垂直方向上排列盒子。使用弹性盒模型可以规定特定的顺序,也可以反转之。要开启弹性盒模型,只需设置拥有子盒子的盒子的display的属性值为box(或inline-box)即可。

view sourceprint?
1.display: box;

水平或垂直分布

“box-orient”定义分布的坐标轴:vertical和horizional。这两个值定义盒子如何显示,

view sourceprint?
1.body{
2.  display: box;
3.  box-orient: horizontal;
4.}

反向分布

“box-direction”可以设置盒子出现的顺序。默认情况下,只需定义分布坐标轴——box随html流分布。如果为水平坐标轴,则从左到右分布;垂直坐标轴则从上到下分布。定义“box-direction”的属性值为“reverse”,则反转盒子的排列顺序。

view sourceprint?
1.body {
2.  display: box;
3.  box-orient: vertical;
4.  box-direction: reverse;
5.}

具体分布

属性“box-ordinal-group”定义盒子分布的顺序。可以随意的控制其分布顺序。这些组以一个从“1”开始的数字定义,盒模型将首先分布这些组,所有这些盒子将在每个组中。分布将从小到大排列。

view sourceprint?
01.body {
02.  display: box;
03.  box-orient: vertical;
04.  box-direction : reverse;
05.}
06.#box1 {
07.  box-ordinal-group: 2;
08.}
09.#box2 {
10.  box-ordinal-group: 2;
11.}
12.#box3 {
13.  box-ordinal-group: 1;
14.}

盒子尺寸

默认情况下,盒子并不具有弹性,如果box-flex的属性值至少为1时,则变得富有弹性。

如果盒子不具有弹性,它将尽可能的宽使其内容可见,且没有任何溢出,其大小由“width”和“height”来决定(或min-height、min-width、max-width、max-height)。

如果盒子是弹性的,其大小将按下面的方式计算:

  1. 具体的大小声明(width、height、min-width、min-height、max-width、max-height);
  2. 父盒子的大小和所有余下的可利用的内部空间

如果盒子没有任何大小声明,那么其大小将完全取决于父box的大小。即:盒子的大小等于父级盒子的大小乘以其box-flex在所有子盒子box-flex总和中的百分比(子盒子的大小=父盒子的大小*子盒子的box-flex/所有子盒子的box-flex值的和)。

如果一个或更多的盒子有一个具体的大小声明,那么其大小将计算其中,余下的弹性盒子将按照上面的原则分享剩下的可利用空间。

看看下面的例子,理解起来更容易。

所有盒子都是弹性的

下面的例子中,box1的大小为box2的两倍,box2与box3大小一样。看起来好像是用百分比定义盒子的大小,但是有一个区别:使用弹性盒模型,增加一个盒子,无须重新计算其大小。

view sourceprint?
01.body {
02.  display: box;
03.  box-orient: horizontal;
04.}
05.#box1 {
06.  box-flex: 2;
07.}
08.#box2 {
09.  box-flex: 1;
10.}
11.#box3 {
12.  box-flex: 1;
13.}

一些盒子有固定大小

下面的例子中,box3并不是弹性的,宽度为160px;这样box1和box2将有240px的可利用空间。因此,box1的宽度为160px(240*2/3),box2的宽度为80px(240*1/3)。

view sourceprint?
01.body {
02.  display: box;
03.  box-orient: horizontal;
04.  width: 400px;
05.}
06.#box1 {
07.  box-flex: 2;
08.}
09.#box2 {
10.  box-flex: 1;
11.}
12.#box3 {
13.  width: 160px;
14.}

溢出管理

因为是弹性盒子、非弹性盒子混排,有可能所有盒子的尺寸大于或小于父盒子的尺寸。这样就有可能空间太多或空间不足。

空间太多如何处理

可利用空间的分布取决于两个属性值:box-align 和 box-pack。

属性“box-pack”管理水平方向上的空间分布,有以下四个可能属性:start、end、 justify、 or center。

  1. start 所有盒子在父盒子的左侧,余下的空间在右侧;
  2. end所有盒子在父盒子的右侧,余下的空间在左侧;
  3. justify 余下的空间在盒子间平均分配;
  4. center 可利用的空间在父盒子的两侧平均分配。

属性“box- align”管理垂直方向上的空间分布,有以下五个可能属性之:start、 end,、center、 baseline和 stretch。

  1. start 每个盒子沿父盒子的上边缘排列,余下的空间位于底部;
  2. end 每个盒子沿父盒子的下边缘排列,余下的空间位于顶部;
  3. center 可用空间平均分配,上面一半,下面一半;
  4. baseline 所有盒子沿着它们的基线排列,余下的空间可前可后;
  5. stretch 每个盒子的高度调整到适合父盒子的高度
view sourceprint?
01.body {
02.  display: box;
03.  box-orient: horizontal;
04.  /* The content of the body is horizontally centered */
05.  box-pack: center;
06.  /* and vertically as well ... \o/ */
07.  box-align: center;
08.  width: 100%;
09.  height : 100%;
10.}

空间不足怎么办

与传统的盒模型一样,overflow属性用来决定其显示方式。为了避免溢出,你可以设置box-lines为multiple使其换行显示。

弹性盒模型看起来很不错,Gecko 和 WebKit对该模型都有一些尝试性的测试。在这些属性之前加上-moz和-webkit即可使用该属性。也即是说,firefox、safari、chrome可以使用这些特性。作为前端开发者来说,该模型对我们解决网页设计中一些常见的问题非常方便,如:表单布局、垂直居中、视觉上分离html流,等等。不就的将来它将成为一个web标准,早早熟悉它不是什么坏事。

视频教程列表
文章教程搜索
 
div+css推荐教程
div+css热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058