水墨中国

弹性盒子模型 box-flex

  • 14-09-25
  • Font-end
  • css
  • box-flex

昨天早上看着阿里巴巴上市以来的喜讯时脑子一热,就翻起了阿里巴巴2014年Web前端的笔试题,其中一道题提起了我的兴趣:

下图绿色区域的宽度为100%,其中有三个矩形,第一个矩形的宽度是200px,第二个和第三个矩形的宽度相等。请使用CSS3中的功能实现它们的布局。 picture1

已知Html的结构是: <div class="box"> <div class="item">column 1</div> <div class="item">column 2</div> <div class="item">column 3</div> </div>

在网上看到过这样一个例子,很有趣,在这里转述给大家:马林大叔省吃俭用一辈子,终于在上海郊外买了间400平米的商品房。后来,马林大叔想回老家养老,决定把房子分配给他的三个儿子。ok,先暂停下,这里提到的“房子”就是”box-flex”中的”box”,“分配”就是”box-flex”中的”flex”,于是,这个“分配房子”的举动就称为”box-flex”,而box-flex属性的值就是说的如何分配,分配比例是什么。oK,继续我们的例子,马林大叔的三个儿子分别叫做大马,中马和小马,其中大马已经结婚多年,有一堆双胞胎女儿,拖家带口的人多;而中马和小马是优秀的光棍人士。所以,大马要求分配200平米的房子,剩下的两个兄弟平分。最终,家人一番协商有了下面的分配结果,就是: #大马{width:200px} #中马{box-flex:1;} #小马{box-flex:1;} 转换为CSS代码为: .item{ -moz-box-flex: 1; -webkit-box-flex: 1; box-flex: 1; } .item:fitst{ -moz-box-flex: 0; -webkit-box-flex: 0; box-flex: 0; width:200px; }

box-flex的含义与作用理解瞬间柳暗花明:用来按比例分配父标签的宽度(或高度)空间。box-flex的值为至少为1的整数时起作用。但是,仅仅一个box-flex属性是不足以实现子元素间的空间分配,因为还要看其老爸的意思。所谓,我爸是李刚,撞人很嚣张;恨爸不是刚,撞人心慌慌。只有老爸开口说:“这个房子现在你们随意分配。”其子女才能分配。所以,父元素也是需要添加必要的声明的。此声明就是: .box{ display: -moz-box; display: -webkit-box; display: box; }

为了让大家更加清楚的认识,这里还有一个“续集”分享给大家:

原本兄弟三人和和睦睦是一点问题都没有的,房子怎么分也基本都定下来了。然而,突然,事情起了波澜。马林大叔忽然决定先暂时住在大马家里,这样可以陪陪孙女解解闷,但房子还是要分的,最终,家人一番协商有了下面的分配结果:房子均分四份,大马占两份,中马小马各占一份,即: #马林{display:box;} #大马{box-flex:2;} #中马{box-flex:1;} #小马{box-flex:1;} 结果如下图所示:

1
2
3

comments powered by Disqus