一、简介

css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间。使用该模型,可以很轻松的创建自适应浏览器窗口的流动布局或自适应字体大小的弹性布局。

目前box属性还没有得到firefox、chrome浏览器的完全支持,但可以使用它们的私有属性定义firefox(-moz-)、chrome/safari(-webkit-)。所以完全可以在手机端的webview页面中采取这样的布局。

二、弹性盒模型

默认情况下,盒子并不具有弹性,如果box-flex的属性值至少为1时,则变得富有弹性。如果盒子不具有弹性,它将尽可能的宽使其内容可见,且没有任何溢出,其大小由“width”和“height”来决定(或min-height、min-width、max-width、max-height)。

弹性盒模型使用细则:

1.必须给父容器定义display: box,其子元素才可以进行划分。

如果给class为p1的子元素设置box-flex设置为3,给class为p2的子元素设置box-flex为1,给class为p3的子元素设置box-flex为1,说明分别给其设置3等分和1等分和1等分。

即给class为p1的子元素设置宽度为100%*3/5=60%;给class为p2的子元素设置宽度为100%*1/5=20%;给class为p3的子元素设置宽度为100%*1/5=20%;

2.如果进行父容器划分的同时,他的子元素有的设置了固定宽度,有的要进行划分的话,那么划分的宽度 = 父容器的宽度 – 已经设置的固定宽度 。再进行对应的划分。

三、box属性

具体的属性有:box-orient | box-direction | box-align | box-pack | box-lines

1、box-orient

常用的几个属性值是:horizontal | vertical | inherit

horizontal:子元素水平排列;vertical:子元素竖直排列;inherit:子元素竖直排列并且让子元素继承父元素的相关属性。

2、box-direction

常用的两个属性值是:normal | reverse

normal是默认值,按照HTML文档里的结构的先后顺序依次展示;reverse表示反转。

3、box-align

box-align 表示父容器里面子容器的垂直对齐方式,可选参数如下表示:start | end | center | baseline | stretch。

4、box-pack

box-pack 表示父容器里面子容器的水平对齐方式,可选参数如下表示:start | end | center | justify。

四、常用demo

1、html

  1. <div class="wrap">
  2. <div class="box1">hello box1</div>
  3. <div class="box2">hello box2</div>
  4. <div class="box3">hello box3</div>
  5. </div>

2、demo1--style--水平排列

  1. .wrap{
  2. height:60px;
  3. display:-moz-box;
  4. display:-webkit-box;
  5. -moz-box-orient:horizontal;
  6. -webkit-box-orient:horizontal;
  7. /* -moz-box-direction:reverse;
  8. -webkit-box-direction:reverse;*/
  9. }
  10. .box1{background:orange;}
  11. .box2{background:#ccc;}
  12. .box3{background:green;}

3、demo1--style--inherit

  1. .wrap{
  2. height:60px;
  3. display:-moz-box;
  4. display:-webkit-box;
  5. -moz-box-orient:inherit;
  6. -webkit-box-orient:inherit;
  7. }
  8. .box1{background:orange;}
  9. .box2{background:#ccc;}
  10. .box3{background:green;}

4、demo1--style--具体分布顺序

  1. .wrap{
  2. display:-moz-box;
  3. display:-webkit-box;
  4. -moz-box-orient:vertical;
  5. -webkit-box-orient:vertical;
  6. }
  7. .box1{
  8. height:60px;
  9. background:orange;
  10. -moz-box-ordinal-group:;
  11. -webkit-box-ordinal-group:;
  12. }
  13. .box2{
  14. height:60px;
  15. background:#ccc;
  16. -moz-box-ordinal-group:;
  17. -webkit-box-ordinal-group:;
  18. }
  19. .box3{
  20. height:60px;
  21. background:green;
  22. -moz-box-ordinal-group:;
  23. -webkit-box-ordinal-group:;
  24. }

5、demo1--style--弹性盒子

  1. .wrap{
  2. display:-moz-box;
  3. display:-webkit-box;
  4. -moz-box-orient:horizontal;
  5. -webkit-box-orient:horizontal;
  6. }
  7. .box1{
  8. height:60px;
  9. background:orange;
  10. -moz-box-flex:;
  11. -webkit-box-flex:;
  12. }
  13. .box2{
  14. height:60px;
  15. background:#ccc;
  16. -moz-box-flex:;
  17. -webkit-box-flex:;
  18. }
  19. .box3{
  20. height:60px;
  21. background:green;
  22. -moz-box-flex:;
  23. -webkit-box-flex:;
  24. }

6、demo1--style--inherit+弹性盒子

  1. .wrap{
  2. height:60px;
  3. display:-moz-box;
  4. display:-webkit-box;
  5. -moz-box-orient:inherit;
  6. -webkit-box-orient:inherit;
  7. }
  8. .box1{
  9. background:orange;
  10. -moz-box-flex:;
  11. -webkit-box-flex:;
  12. }
  13. .box2{
  14. background:#ccc;
  15. -moz-box-flex:;
  16. -webkit-box-flex:;
  17. }
  18. .box3{
  19. background:green;
  20. -moz-box-flex:;
  21. -webkit-box-flex:;
  22. }

7、demo1--style--弹性盒子与固有宽度混用

  1. .wrap{
  2. display:-moz-box;
  3. display:-webkit-box;
  4. -moz-box-orient:horizontal;
  5. -webkit-box-orient:horizontal;
  6. }
  7. .box1{
  8. height:60px;
  9. background:orange;
  10. -moz-box-flex:;
  11. -webkit-box-flex:;
  12. }
  13. .box2{
  14. height:60px;
  15. background:#ccc;
  16. -moz-box-flex:;
  17. -webkit-box-flex:;
  18. }
  19. .box3{
  20. height:60px;
  21. background:green;
  22. width:80px;
  23. }

五、总结自适应页面布局

bootstrap栅格布局 - 弹性盒模型 - table布局(display:table-cell;)

六、弹性盒子(新)

1、简介:
弹性盒子(旧):display:box; 弹性盒子(新):display:flex; 下面介绍的就是新的弹性盒子:
弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。弹性容器通过设置 display 属性的值为 flex 或 inline-flex 将其定义为弹性容器。弹性容器内包含了一个或多个弹性子元素。弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

2、在弹性盒子中常用到的属性:

(1)flex-direction - 指定了弹性容器中子元素的排列方式。它的属性值如下:

row:横向从左到右排列(左对齐),默认的排列方式;row-reverse:反转横向排列(右对齐),从后往前排,最后一项排在最前面。
column:纵向排列;column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。

(2)justify-content - 设置弹性盒子元素在主轴(横轴)方向上的对齐方式。它的属性值如下:

flex-start:弹性项目向行头紧挨着填充。(默认值)
flex-end:弹性项目向行尾紧挨着填充。
center:弹性项目居中紧挨着填充。
space-between:弹性项目平均分布在该行上。
space-around:弹性项目平均分布在该行上,两边留有一半的间隔空间。

(3)align-items - 设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。它的属性值如下:

flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。
baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。(默认值)

(4)flex-wrap - 用于指定弹性盒子的子元素换行方式。它的属性值如下:

nowrap:默认,弹性容器为单行。该情况下弹性子项可能会溢出容器。
wrap:弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行。
wrap-reverse:反转 wrap 排列。

(5)align-content - 用于修改 flex-wrap 属性的行为,类似 align-items, 但不是设置子元素对齐,而是设置行对齐。它的属性值如下:

stretch:默认,各行将会伸展以占用剩余的空间。
flex-start:各行向弹性盒容器的起始位置堆叠。
flex-end:各行向弹性盒容器的结束位置堆叠。
center:各行向弹性盒容器的中间位置堆叠。
space-between:各行在弹性盒容器中平均分布。
space-around:各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。

(6)order - 设置弹性盒子的子元素排列顺序。用整数值来定义排列顺序,数值小的排在前面。可以为负值。

(7)align-self - 在弹性子元素上使用。覆盖容器的 align-items 属性。

auto:其计算值为元素的父元素的'align-items'值,如果其没有父元素,则计算值为'stretch'。
flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。
baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

(8)flex - 设置弹性盒子的子元素如何分配空间。

网上参考:

http://www.runoob.com/css3/css3-flexbox.html

css3弹性盒模型的更多相关文章

  1. CSS3弹性盒模型flexbox布局基础版

    原文链接:http://caibaojian.com/using-flexbox.html 最近看了社区上的一些关于flexbox的很多文章,感觉都没有我这篇文章实在,最重要的兼容性问题好多人都没有提 ...

  2. css3基础教程:CSS3弹性盒模型

    今天给大家分享一篇关于CSS3基础教程 文章,主要是讲CSS3弹性盒模型.弹性布局的主要思想是让容器有能力来改变项目的宽度和高度,以填满可用空间(主要是为了容纳所有类型的显示设备和屏幕尺寸)的能力. ...

  3. CSS3弹性盒模型,Flex布局教程

    布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. CSS3中引入flex的弹性盒模型 ...

  4. CSS3弹性盒模型布局模块介绍

    来源:Robert’s talk原文:http://robertnyman.com/2010/12/02/css3-flexible-box-layout-module-aka-flex-box-in ...

  5. css3弹性盒模型flex快速入门与上手(align-content与align-items)

    接着上文css3弹性盒模型flex快速入门与上手1继续,上文还剩下两个父容器的属性align-items和align-content. 一.align-content:多行的副轴对齐方式 含义 多行的 ...

  6. css和css3弹性盒模型实现元素宽度(高度)自适应

    一.css实现左侧宽度固定右侧宽度自适应 1.定位 <!DOCTYPE html> <html lang="en"> <head> <me ...

  7. (转)详解css3弹性盒模型(Flexbox)

    今天刚学了css3的弹性盒模型,这是一个可以让你告别浮动.完美实现垂直水平居中的新特性. Flexbox是布局模块,而不是一个简单的属性,它包含父元素和子元素的属性. Flexbox布局的主体思想是似 ...

  8. CSS3弹性盒模型flexbox完整版教程

    http://caibaojian.com/flexbox-guide.html 来自CSS Tricks上的一个教程,原文为:A Complete Guide to Flexbox.文中详细的介绍了 ...

  9. CSS3弹性盒模型之box-orient & box-direction

    Css3引入了新的盒模型——弹性盒模型,其实上一篇文章已经讲到了一个box-flex,今天来讲讲另外的两个弹性盒模型属性box-orient 和 box-direction. 1.box-origen ...

随机推荐

  1. BZOJ 3505 【Cqoi2014】 数三角形

    Description 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个. 下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input 输入一行,包含两个空格分隔的正整数m ...

  2. JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素

    (注:简介基于IDEA的版本为:11.0,下载地址:http://www.jetbrains.com/idea/) 打开IDEA,(当第一次打开的时候出现的是一个欢迎页面,随便创建一个project来 ...

  3. title与alt的区别

    html中的title属性和alt属性让人有些混淆. 以前不知道有title这个属性,第一次用到它时,就和alt产生了混淆.一位朋友告诉我说,alt是图片img标签里用的,title是超链接里用的, ...

  4. Convertion of grey code and binary 格雷码和二进制数之间的转换

    以下转换代码摘自维基百科 Wikipedia: /* The purpose of this function is to convert an unsigned binary number to r ...

  5. JS组件系列——分享自己封装的Bootstrap树形组件:jqTree

    前言:之前的一篇介绍了下如何封装自己的组件,这篇再次来体验下自己封装组件的乐趣.看过博主博客的园友应该记得之前分享过一篇树形菜单的使用JS组件系列——Bootstrap 树控件使用经验分享,这篇里面第 ...

  6. 了解 JS 原型

    原型概念 当创建了一个函数时,就会根据一组特定的规则为该函数创建一个 prototype 属性,这个属性指向函数的原型对象.在默认情况下,所有原型对象都会自动获得一个constructor 的属性 这 ...

  7. CloudSim介绍和使用

    本文主要介绍一下我在使用CloudSim时翻译.整理和理解的一些信息,以及我的使用经验,希望能对有需要的朋友们有所帮助~1.我翻译和理解的一些信息:    2009年4月8日,澳大利亚墨尔本大学的网格 ...

  8. 软件工程(FZU2015)助教总结

    本次构建之法-SE助教工作,和福州大学张老师协作,福大学生基本发挥出了一定水平,在此做个小结. 教师 张老师本身的SE教学经验足够丰富,对教学工作中的教师.助教.学生的角色定位清晰,整体节奏和安排合理 ...

  9. 【OpenJudge 191】【POJ 1189】钉子和小球

    http://noi.openjudge.cn/ch0405/191/ http://poj.org/problem?id=1189 一开始忘了\(2^{50}\)没超long long差点写高精度Q ...

  10. bzoj1208

    1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7589  Solved: 3009[Submit][Sta ...