对于之前讲过的box-sizing属性,对于页面布局很有用,但是突然发现它依然存在一些问题,前面例子中不会存在问题,不代表它没有问题。如果元素的个数整除100%的时候呢,比较3个元素,那么第一个盒子的宽度就会是33.3333333%,很显然,无论如何都是除不尽的,也就是说不可能平均分配。这显然是不完美的!是否有更完美的解决方案呢,答案是——有,它就是 box-flex.

box-flex是css3新添加的盒子模型属性,它的出现打破了我们经常使用的浮动布局,实现垂直等高、水平均分、按比例划分。它使元素实现水平分布,而且不需要使用浮动float属性就能实现水平布局。

先看代码:

.box {
    display:box;display:-webkit-box;display:-moz-box;background-color:#fff;width:500px;height:100px;border:1px solid #333;margin:0 auto;
}
.col_1 {
  box-flex:1;-moz-box-flex:1;-webkit-box-flex:1;background-color:#ffc;
}
.col_2 {
    background-color:#ccf;box-flex:2;-moz-box-flex:2;-webkit-box-flex:2;
}
.col_3 {
    background-color:#fcf;box-flex:2;-moz-box-flex:2; -webkit-box-flex:2;
}
 
      想要使用box-flex,其父容器必须定义为display:box,而且对于各浏览器必须加上自己私有的前缀,因为目前还没有浏览器支持box-flex属性。容器定子display:box则该容器为内联元素。
      上例中把父容器分成了5份,三个子元素分别为1,2,2,即box-flex的值就是它所占的等份。那么,col_1为500px*(1/5)=100px,col_2和col_3都为500px*(2/5)=200px。那如果其中一个元素设置了固定的宽度值又会如何呢?如:col_3{width:50px},那么设置了固定宽度值的元素就是固定的值,其他子元素就把剩下的部分再按上面的方式来进行分配,当子元素有间隔的时候,他们平分的宽度需要减去它们的margin值,然后再按比较分配。
      不需要计算百分比,设置等分数就能完美展现想要的!!box-flex绝对是你想要的!!

CSS3弹性盒模型之box-flex的更多相关文章

  1. CSS3弹性盒模型 display:box

    刚开始做网页时就有一个困惑,为什么display:block只能垂直排列,如果要水平排列就要使用float:left等方式.这种方法最难受的当然是当子元素的数量改变时,需要去修改子元素的宽度使重新适应 ...

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

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

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

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

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

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

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

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

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

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

  7. CSS3弹性盒模型新版和老版写法差异

    1.在使用弹性盒模型的时候父元素必须要加display:box 或 display:inline-box: 新版弹性盒模型:flex:display : flex 老版弹性盒模型:box : disp ...

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

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

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

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

  10. css3弹性盒模型

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

随机推荐

  1. QT5.4关联VS2010,配置VAssistX关联Qt类

    1.参考网站:http://www.kavenblog.com/?p=272 2.下载插件:http://www.qt.io/zh-hans/download-open-source/#section ...

  2. Construct a basic automation test framework

    Elements in an automation test framework: actor,---simulate trader, have its own name, can get contr ...

  3. 用C语言实现评论系统设计 - 无数据库版

  4. HDU 4911

    http://acm.hdu.edu.cn/showproblem.php?pid=4911 一场多校的签到题,树状数组离散化求逆序数 #include <iostream> #inclu ...

  5. 第一次div1做出3道题

    第一次div1做出3道题! 再接再厉! 哈利路亚!

  6. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  7. PHP 转换snmp的时间格式

    function convert_snmp_timeticks($timeticks) { if(!is_numeric($timeticks)) { return FALSE; } //如果是字符串 ...

  8. LeetCode Subsets II (DFS)

    题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...

  9. 本地安装git

    在ubuntu上安装git特别简单 首先用命令查看是否安装git 在终端输入 git 如果没有安装 sudo apt-get install git 安装完之后,测试是否安装成功: git --ver ...

  10. java中byte数据转换为c#的byte数据

    最近在做下载方面的开发.有一个需求,就是读取要下载的文件中的一些数据,比如要读取这个文件包含的用户信息,但是怎么读都不对.后来搞了很久才发现,服务器上的文件里的用户信息,用C#写的存储方法来存储的,而 ...