display:flex 多栏多列布局

display:flex 多栏多列布局浏览器支持情况:火狐直接支持w3c无前缀写法,谷歌和opera支持-webkit- 前缀写法,比较适合移动端开发使用,

display:flex 这个牛逼的css3布局属性,遗憾的是只有谷歌和火狐支持,
中国人常用的手机上的浏览器几乎全军覆没,UC浏览器不支持,安卓4.1.1和之前版本手机自带的浏览器也不支持,微信自带浏览器也不支持。

看来要留给儿子们用了。

示例:

html,body{ padding:0; margin:0;}
/*
	flex-flow: row wrap; row横向(左向右)显示 column竖向(上向下)显示 wrap一行显示不完的时候换行
*/
.col{ border:red solid 1px;}
footer { height:300px;

  display: -webkit-flex;
  -webkit-flex-flow: row;
  -webkit-align-items: stretch;
  -webkit-justify-content:space-between;

  /*IE10还不支持*/
  display: -ms-flex;
  -ms-flex-flow: row wrap;
  -ms-align-items: stretch;
  -ms-justify-content:space-between;

  display: flex;
  flex-flow: row;
  align-items: stretch;
  justify-content:space-between;
}
.col2{-webkit-flex:1;-moz-flex:1;flex:1}
display:flex 的HTML测试结构<footer>
    <div class="col col1" style=" width:60px;">jquery特效</div>
    <div class="col col2" style="">前端路上</div>
    <div class="col col3" style="width:30px;">懒人建站</div>
</footer> 

一个Flexbox布局是由一个伸缩容器(flex containers)和在这个容器里的伸缩项目(flex items)组成。

  伸缩容器(flex  containers)是一个HTML标签元素,并且“display”属性显式的设置了“flex”属性值。在伸缩容器中的所有子元素都会自动变成伸缩项目(flex  items)。
  这有一个三列布局的例子。外面的div容器是一个伸缩容器,而里面的left、main和right三个div都是伸缩项目:

  设置一个简单的伸缩容器很容易,代码如下:

.container {  display: flex;}          伸缩方向与换行(flex-flow)
  伸缩容器有一个CSS属性“flex-flow”用来决定伸缩项目的布局方式。如果伸缩容器设置了“flex-flow”值为“row”,伸缩项目排列由左向右排列:

  如果“flex-flow”值设置为“column”,伸缩项目排列由上至下排列:

  这里将展处样设置伸缩容器,使用伸缩项目在一行中显示:

.container {  display: flex;  flex-flow: row;}          一个伸缩容器中的所有伸缩项目既可以排列在单行也可以多行排列。这个主要由“flex-flow”是否设置为“wrap”来决定。如果伸缩容器设置了“wrap”属性值,当伸缩项目在伸缩容器中无法在一行中显示的时候会另起一行排列。

  这里展示了如何将伸缩容器设置为“wrap”:

.container {  display: flex;  flex-flow: row wrap;}  伸缩项目(flex items)
  在伸缩容器中的所有子元素都将自动变成伸缩项目。没有额外配置CSS的必要。你唯一需要的做的就是设置伸缩项目的尺寸。
  如果伸缩容器把“flex-flow”设置为“row”后,伸缩项目将需要设置他们的宽度。伸缩项目的高度将会自动设置为伸缩容器的高度:

 如果伸缩容器把“flex-flow”设置为“column”后,伸缩项目将需要设置他们的高度,伸缩项目的宽度将会自动设置为伸缩容器的宽度:

 给伸缩项目设置“width”和“height”属性来定义伸缩项目尺寸,而这个伸缩项目是独立于其他伸缩项目。例如,如果我们给主内容(content)设置了一个600px的宽度,不管伸缩容器中有一个、两个或者上百个伸缩项目,主内容的宽度都是600px。

  如果你想伸缩项目根据伸缩容器剩余的空间来决定伸缩项目的宽度,你可以使用“flex”属性。例如,我们可以告诉浏览器,左边栏和右边栏占用了伸缩容器减去主内容宽度的空间。
  flex的值于对应的空间成正比。如果左边栏设置了值为“1”和右边栏设置了值为“2”,伸缩容器剩余的空间将按比例分配给左边栏和右边栏,并且右边栏所占的空间是左边栏的两倍:

  下面是示例中运用在伸缩项目上的一些代码,展示了独立宽度和按比例计算的宽度:

.main {  width: 600px;}.left {  flex: 1;}.right {  flex: 2;}  完整的实例
  这是一个很简单的实例,Flexbox创建了一个经典的三列布局。主内容宽度为60%,而边栏是使用“flex”属性,按比例自动根据伸缩容器剩余空间计算得到对应的宽度:
  HTML结构
  …       …     …
          CSS代码
.container {  display: flex;  flex-flow: row;}.main {  width: 60%;}.left {  flex: 1;}.right {  flex: 2;}  示例效果

时间: 2024-11-03 22:42:59

display:flex 多栏多列布局的相关文章

display:flex;多行多列布局学习

从以前的table布局到现在的div布局,再到未来的flex布局,CSS重构方面对展示行和适应性的要求越来越高: 首先来比较一下布局方式的更新意义: table布局: 优点:1.兼容性好,ie6.ie7或者什么稀奇古怪的浏览器,table布局可以用最小的代价兼容这些稀奇古怪的浏览器:   2.自适应性,根据内容自适应内部元素的宽高: 3.开发时间短: 缺点:1.table嵌套table,性能差: 2.对SEO不友好: 3.样式可塑性差,无法准确实现设计图效果: 4.不利于后期维护: div+cs

flex几种多列布局

基本的等分三列布局 .container{ display: flex; width: 500px; height: 200px; } .left{ flex:1; background: red; } .middle{ flex:1; background: green; } .right{ flex:1; background: blue; } <div class="container"> <div class="left"></

display:flex 布局详解(2)

1.  flex设置元素垂直居中对齐 在之前的一篇文章中记载过如何垂直居中对齐,方法有很多,但是在学习了flex布局之后,垂直居中更加容易实现 HTML代码: 1 <div class="demo"> 2 <div class="inner"> 3 <p>这是一个测试这是一个测试这是一个测试这是一个测试这是一个测试</p> 4 </div> 5 </div> CSS代码: .demo{ widt

弹性盒布局display:flex详解

一:弹性盒子 随着响应式设计的流行,网站开发者在设计网页布局时往往要考虑到页面在适配不同分辨率的浏览器时其内部组件位置大小都会产生变化,因此需要设计者根据窗口尺寸来调整布局,从而改变组件的尺寸和位置,以达到最佳的显示效果.本文介绍的就是一种实现这种变化的比较简单的模型:弹性盒子. 二:属性 首先要给父容器设置display:flex(或者inline-flex)属性,就可以让该父容器的布局方式变为弹性盒模型,接着,给父容器或者子元素设置不同属性来实现具体布局. ①:给父容器添加的属性 1.fle

弹性布局display:flex

1.flex-direction:设置伸缩项目的排列方式,即主轴的方向 row    设置从左到右排列 row-reverse    设置从右到左排列 column    设置从上到下排列 column-reverse    设置从下到上排列 2.justify-content:调整主轴方向上的对齐方式,对于弹性盒子内元素 flex-start    伸缩项目以起始点靠齐 flex-end    伸缩项目以结束点靠齐 center    伸缩项目以中心点靠齐 space-between    伸

display:flex和display:box布局浏览器兼容性分析

display:flex和display:box都可用于弹性布局,不同的是display:box是2009年的命名,已经过时,用的时候需要加上前缀:display:flex是2012年之后的命名.在实际的测试中display:flex不能完全的替代display:box.display:flex的浏览器兼容性比较麻烦. 1.关于display:flex 对于响应式布局,使用flex很方便,但是它的兼容性也是一个值得考虑的问题. <div class="container">

1.display:flex布局笔记

/*display:flex布局方式主要运用于垂直居中的效果*/ 一.Flex译为Flexible Box(弹性盒子),任何一个容器都可以指定为Flex布局 注:设置为Flex布局之后,子元素的float,clear,vertical-align属性都失效 1 .box1 { 2 display : flex 3 } 4 .box2 { 5 display : inline-flex 6 } 7 .box3 { 8 display : -webkit-flex; 9 display : flex

HTML/CSS:display:flex 布局教程

网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. Flex 布局将成为未来布局的首选方案.本文介绍它的语法,下一篇文章给出常见布局的 Flex 写

display:flex 在布局中的妙用

最近越来越依赖display:flex 了.本来只是在移动端用来作弹性布局,现在在PC端,我基本用它来取代 float:left.比如昨天做的一个专题,基本都用 flex 来布局. 但是这其中的原理呢,flex布局的相对于float的优势又在哪呢.只是对这些有一个模糊的概念. 比如float:left/right 这个功能,一般用来排版.而它的高度塌缩,一些潜在的未被触发的问题,总是给人一种很"不靠谱"的感觉. 先来盘点下float的特性: 1. 脱离当前文档流.浮动盒子会贴着容器或者