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

时间:2022-09-17 13:30:58

原文链接:http://caibaojian.com/using-flexbox.html

最近看了社区上的一些关于flexbox的很多文章,感觉都没有我这篇文章实在,最重要的兼容性问题好多人都没有提出解决方案。另外本人2014年5月还废寝忘食的翻译了国外的《CSS3弹性盒模型flexbox完整教程》和《CSS3弹性盒模型flexbox布局实例》,这么好的文章没有人来发现,实在是遗憾。

文章写作背景

查询Can I use上的使用情况,发现最新的浏览器基本支持这个属性,IE10开始支持,需要添加-ms前缀。

至于IE10之前的就不考虑了。弹性布局适合于移动前端开发,在Androidios上也完美支持,所以搞移动的朋友非常有必要认识和使用了。这个属性很久就看到了。一直在考虑到兼容性问题,没有认真深入,后来又发现在现在现代浏览器中也会出现一些诡异的bug,所以又放弃了。

如果考虑到只处理移动方面的,那么兼容性就可以忽略了。

w3c上是这样子定义的:box-flex的值为元素的可伸缩行。柔性是相对的,例如 box-flex 为 2 的子元素两倍于 box-flex 为 1 的子元素。

文章写作目的

Flexbox是一个相当优秀的属性,它可能会成为未来版面布局的一部分。它的语法在过去的几年里发生了很大的变化。但如果我们把旧的,新的和过渡的版本整合在一起,就可以实现更好的支持各种浏览器了。尤其适合简单的,也是最常见使用例子:控制网格。

语法变化的地方

如果你搜索关于Flexbox的相关内容,你会发现许多过时的信息,让我们来看看下面这几种情况:

  1. 第一种:display:box; 或者是一个属性box-*;那么你看到的是2009年以前的Flexbox。
  2. 第二种:display:flexbox,或者是一个函数flex(),那么你看到的是2011这个中间版本的Flexbox。
  3. 第三种:display:flex,或者其他flex-*的属性,那么你看到的是当前的规范(截止本文发表时间)。

过时的例子

  1. Flexie - a javascript polyfill for Flexbox, uses old 2009 syntax.
  2. This article by Richard 分享在 Smashing Magazine在2011过渡时间,但它更多的关注是2009以前的语法。
  3. Stephen Hay写了一系列关于Flexbox的文章,这篇文章介绍2009以前的语法,接着是另外一个2011的另外一篇,很不幸,一个月过后语法又更新了。

查看例子

 

综合案例

最终的排版显示会是下面这样子的。

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

需要用到的CSS知识,display,box-flex,flex,box-ordinal-group,flex-order,order,这几个都是css3的关于弹性盒子的新属性。相关属性将在下一篇文章详细讲解,敬请留意。

html代码

<div class="page-wrap">

  <section class="main-content" role="main">
Main content: first in source order
</section> <nav class="main-nav" role="navigation">
Links
</nav> <aside class="main-sidebar" role="complementary">
Sidebar
</aside> </div>

CSS代码

//code from http://caibaojian.com/using-flexbox.html
.page-wrap {
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
.main-content {
width: 60%;
}
.main-nav,
.main-sidebar {
-webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-flex: 1; /* OLD - Firefox 19- */
width: 20%; /* For old syntax, otherwise collapses. */
-webkit-flex: 1; /* Chrome */
-ms-flex: 1; /* IE 10 */
flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
.main-content {
-webkit-box-ordinal-group: 2; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-ordinal-group: 2; /* OLD - Firefox 19- */
-ms-flex-order: 2; /* TWEENER - IE 10 */
-webkit-order: 2; /* NEW - Chrome */
order: 2; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
.main-nav {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
-ms-flex-order: 1;
-webkit-order: 1;
order: 1;
}
.main-sidebar {
-webkit-box-ordinal-group: 3;
-moz-box-ordinal-group: 3;
-ms-flex-order: 3;
-webkit-order: 3;
order: 3;
}

演示地址

浏览器支持

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

更多关于flexbox

  1. CSS3弹性盒模型flexbox布局实例
  2. CSS3弹性盒模型flexbox完整版教程

参考内容

http://css.doyoe.com/

http://css-tricks.com/using-flexbox/

http://www.w3school.com.cn/cssref/pr_box-flex.asp

CSS3弹性盒模型flexbox布局基础版的更多相关文章

  1. CSS3弹性盒模型flexbox布局

    属性介绍 display: flex | inline-flex; (适用于父类容器元素上) 定义一个flex容器,内联或者根据指定的值,来作用于下面的子类容器.· box:将对象作为弹性伸缩盒显示. ...

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

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

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

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

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

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

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

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

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

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

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

    原文链接:http://caibaojian.com/flexbox-guide.html flexbox-CSS3弹性盒模型flexbox完整版教程 A-A+ 前端博客•2014-05-08•前端开 ...

  8. css3弹性盒模型

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

  9. css3弹性盒模型flex快速入门与上手&lpar;align-content与align-items&rpar;

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

随机推荐

  1. &lbrack;Asp&period;net 5&rsqb; DependencyInjection项目代码分析

    最近在研究开源代码,正好发现Asp.net5的源码,下载地址:https://github.com/aspnet. 今天主要讲的是DependencyInjection这部分,抛砖引玉,供大家参考,也 ...

  2. Java线程池应用

    Executors工具类用于创建Java线程池和定时器. newFixedThreadPool:创建一个可重用固定线程数的线程池,以共享的*队列方式来运行这些线程.在任意点,在大多数 nThread ...

  3. Unity-Animator深入系列---剪辑播放后位置预判&lpar;Animator&period;Target&rpar;

    回到 Animator深入系列总目录 animator.SetTarget(...);可以在播放前预判剪辑播放后的位置,但只限于人形动画 参数1是预判的关节,参数2是映射的剪辑时间 调用后通过targ ...

  4. BZOJ2298&colon; &lbrack;HAOI2011&rsqb;problem a

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2298 题解:刚开始思考的方向错了...一直在想LIS什么的,又发现不合法的情况不好判断,真是个 ...

  5. JavaScript获取元素样式

    原生的JavaScript获取写在标签内部的样式很简单: <div class="test" id="test" style="width:10 ...

  6. 一个简单java爬虫爬取网页中邮箱并保存

    此代码为一十分简单网络爬虫,仅供娱乐之用. java代码如下: package tool; import java.io.BufferedReader; import java.io.File; im ...

  7. Python进阶之面向对象编程&lpar;二&rpar;

    Python面向对象编程(二) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...

  8. Hi3531 SDK 安装以及升级使用说明

    Hi3531 SDK 安装以及升级使用说明 第一章 Hi3531_SDK_Vx.x.x.x版本升级操作说明    如果您是首次安装本SDK,请直接参看第2章.     第二章 首次安装SDK 1.Hi ...

  9. java工具类——java将一串数据按照gzip方式压缩和解压缩

    我要整理在工作中用到的工具类分享出来,也方便自己以后查阅使用,这些工具类都是我自己实际工作中使用的 import java.io.ByteArrayInputStream; import java.i ...

  10. How to modify analog output range of Arduino Due

    Voltage Translation for Analog to Digital Interface ADC How to modify analog output range of Arduino ...