flexbox弹性盒子模型

这几天在做移动端的web开发,遇到了一些问题,之前没有折腾过这方面的东西,这次好好吸收下

css3的flexbox--弹性盒子模型,这个盒模型决定了一个盒子在其他盒子中的分布方式及如何处理可用的空间。

优点:可以很轻松的创建自适应的浏览器窗口的流动布局或自适应字体大小的弹性布局。

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

1、开启弹性盒子模型的方式:display: box;

【水平或垂直分布】

body {
  display: box;
  box-orient: horizontal;
}

【反向分布】

body {
  display: box;
  box-orient: vertical;
  box-direction: reverse;
}

【具体分布】

/*box-ordinal-group: 定义盒子分布的顺序(数字),分布从小到大*/
body {
  display: box;
  box-orient: vertical;
  box-direction : reverse;
}
#box1 {
  box-ordinal-group: 2;
}
#box2 {
  box-ordinal-group: 2;
}
#box3 {
  box-ordinal-group: 1;
}

【盒子尺寸】

/*
    默认情况下,盒子并不具有弹性,如果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大小一样。看起来好像是用百分比定义盒子的大小,但是有一个区别:使用弹性盒模型,增加一个盒子,无须重新计算其大小。
*/
body {
  display: box;
  box-orient: horizontal;
}
#box1 {
  box-flex: 2;
}
#box2 {
  box-flex: 1;
}
#box3 {
  box-flex: 1;
}

【一些盒子有固定大小】

/*
    公式:子盒子的大小=父盒子的大小*子盒子的box-flex/所有子盒子的box-flex值的和
    下面的例子中,box3并不是弹性的,宽度为160px;这样box1和box2将有240px的可利用空间。因此,box1的宽度为160px(240*2/3),box2的宽度为80px(240*1/3)。
*/

body {
  display: box;
  box-orient: horizontal;
  width: 400px;
}
#box1 {
  box-flex: 2;
}
#box2 {
  box-flex: 1;
}
#box3 {
  width: 160px;
}

【空间太多如何处理】

/*
    可利用空间的分布取决于两个属性值: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 每个盒子的高度调整到适合父盒子的高度
*/

body {
  display: box;
  box-orient: horizontal;
  width: 400px;
}
#box1 {
  box-flex: 2;
}
#box2 {
  box-flex: 1;
}
#box3 {
  width: 160px;
}

【空间不足怎么办】

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

内容经过一些修改和整理:出于豆瓣分享平台

更多关于css弹性盒: 更多

时间: 2024-12-19 07:34:33

flexbox弹性盒子模型的相关文章

CSS Flexbox 弹性盒子模型

CSS Flexbox 弹性盒子模型 设置元素样式为 display: flex 或 display: inline-flex, 让元素变成flex容器, 从而可以通过flex模式布局它的子元素. flex-direction: 值 row | row-reverse | column | column-reverse默认值 row flex-wrap: 值 nowrap | wrap | wrap-reverse默认值 nowrap flex-flow: 值 <flex-direction>

浅谈css3弹性盒子模型

昨晚听了一个微信小程序的公开课,在布局时,无意间看到了弹性盒子的身影,之前只知道box-flex,但是由于兼容性问题,使用者很少,毕竟市面上的大多浏览器都必须加前缀才能实现,也就意味着多写几行代码,其实这都不是事,可是大部分CXY都比较懒,能一行代码搞定的事绝不写两行.废话有点多了.转回正题. 我学东西遵循着,是什么?为什么?怎么用?有什么问题?下面我就按这四个方向深入聊聊,水平有限,有问题的地方请多多指教.. 一.是什么? 相信大多数CXY遇到问题,不知是骡子还是马,都会习惯性谷歌之,我也不例

CSS弹性盒子模型

<!-- # 用于学习css弹性盒子模型 - 是一种一维的布局模型.给flexbox的子元素之间提供了强大的空间分布和对齐能力 - display:flex 设置为弹性盒子 - flexbox内flex元素的默认属性 - 元素排列为一行 (flex-direction 属性的初始值是 row). - 元素从主轴的起始线开始. - 元素不会在主维度方向拉伸,但是可以缩小. - 元素被拉伸来填充交叉轴大小. - flex-basis 属性为 auto. - flex-wrap 属性为 nowrap.

css3弹性盒子模型之box-flex

css3弹性盒子模型之box-flex 浏览器支持 目前没有浏览器支持 box-flex 属性. Firefox 支持替代的 -moz-box-flex 属性. Safari.Opera 以及 Chrome 支持替代的 -webkit-box-flex 属 box-flex是css3新添加的盒子模型属性),它的出现打破了我们经常使用的浮动布局,实现垂直等高.水平均分.按比例划分.但是它有一定的局限性,在firefox.chrome这浏览器下需要使用它们的私有属性来定义:firefox(-moz)

[ css 弹性盒子模型 box-flex 及相关属性 ] box-flex属性弹性盒子模型讲解及实例演示

box-flex属性(和谐版) 有道桌面词典显示,”flex”一词中文有“收缩”之意.不过,从此属性实际上产生的效果来看,无论怎样用“收缩”一词解释都显得很牵强.所以,这里,直接抛开字面意思,我们可以将”box-flex”理解为”房子-分配”.box为“盒子”的意思,我们可以理解为当下价格巨高的“房子”,”flex”指兄弟几个“分配房子”. 举个更实际点的例子:马林大叔省吃俭用一辈子,终于在上海郊外买了间150平米的商品房.后来,马林大叔想回老家养老,决定把房子分配给他的三个儿子.ok,先暂停下

CSS box-flex属性,然后弹性盒子模型简介

一.here we go 看到大神写的关于box-flex的介绍,忍不住收了,大神介绍的很详细,新技能get! 二.box-flex属性(和谐版) 有道桌面词典显示,"flex"一词中文有"收缩"之意.不过,从此属性实际上产生的效果来看,无论怎样用"收缩"一词解释都显得很牵强.所以,这 里,直接抛开字面意思,我们可以将"box-flex"理解为"房子-分配".box为"盒子"的意思,我们

02 AppCan入门学习之弹性盒子模型

弹性盒子模型 效果: 一.弹性盒子模型 1. 流式布局 <!-- 流式布局--> <divstyle='display: inline;border: 1px solid orange'> <divstyle='display: inline;background: #66ccff'>流式文件左边</div> <divstyle='display: inline;background: #ffffff'>流式文件右边</div> &l

CSS box-flex属性 弹性盒子模型简介

二.box-flex属性(和谐版) 有道桌面词典显示,”flex”一词中文有“收缩”之意.不过,从此属性实际上产生的效果来看,无论怎样用“收缩”一词解释都显得很牵强.所以,这里,直接抛开字面意思,我们可以将”box-flex”理解为”房子-分配”.box为“盒子”的意思,我们可以理解为当下价格巨高的“房子”,”flex”指兄弟几个“分配房子”. 举个更实际点的例子:马林大叔省吃俭用一辈子,终于在上海郊外买了间150平米的商品房.后来,马林大叔想回老家养老,决定把房子分配给他的三个儿子.ok,先暂

css3弹性盒子模型之box-flex(修正版一)

http://www.rainleaves.com/html/1095.html css3弹性盒子模型之box-flex(修正版一) 发表于 2011/12/06 9 条回复 18,699 views 今天看到蓝色理想上面有一篇文章讲<css3弹性盒模型布局模块介绍>里面讲到用box-flex,突然觉得有点心慌,上次看到响应式网页设计里面也同样讲到flex box自适应布局,而上次竟然没有引起自己的注意,想深入研究一下,竟然给忘记了,于是就在这种不断的忘记中彻底变成outer.今天借此机会,好