Flexbox新语法旧语法混用让浏览器完美的展示

文章简介:使用Flexbox:新旧语法混用实现最佳浏览器兼容。

Flexbox非常的棒,肯定是未来布局的一种主流。在过去的几年这之中,语法改变了不少,这里有一篇“旧”和“新”新的语法区别教程(如果你对英文不太感兴趣,可以移步阅读中文版本)。但是,如果我们把Flexbox新语法、旧语法和中间过渡语法混合在一起使用,我们就可以让浏览器得到完美的展示。尤其是对一个简单的和最可能常见的实例:控制网格顺序。

HTML结构

一个具有语义化的容器“page-wrap”,包裹了三个主要区域,并将容器设置为伸缩容器,此时容器中的每外区域自动变成了伸缩项目。

<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>	 

我们最终要实现的效果如下:

伸缩容器

我们需要使用我们的列在一个伸缩容器中显示上下文。只有这样,这些元素才能直接成为伸缩项目。他们之前是什么没有关系,只要现在他们是伸缩项目。

我们需要把Flexbox旧的语法、中间过渡语法和最新的语法混在一起使用,在这里他们的顺序显得非常重要。“display”属性本身并不添加任何浏览器前缀,我们需要确保我们老语法不要覆盖新语法让浏览器(可能总是会)同时支持。

.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+ */  }	 

控制列宽

我们目标是制作一个20%、60%、20%网格布局。

第一步设置我们主内容区域宽度为60%。

第二步设置侧边栏来填补剩余的空间。

同样把新旧语法混在一起使用:

.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+ */ }	 

在新的语法中,没有必要给边栏设置宽度,因为他们同样会使用20%比例填充剩余的40%空间。但是我发现,如果不给他们显式的设置宽度,在老的语法下会直接崩溃。

重排列的顺序

我希望主内容排列在中间,但在源码之中他是排列在第一的位置。使用Flexbox可以非常容易实现,但是我们需要把Flexbox几中不同的语法混在一起使用:

.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; }	 

支持的浏览器

如果你将Flexbox多版本混合在一起使用,可以得到以下浏览器的支持:

  • Chrome any
  • Firefox any
  • Safari any
  • Opera 12.1+
  • IE 10+
  • iOS any
  • Android any

最在的限制当然是IE浏览器了,但在其他方面很好。如果你正在做一个特定的移动版本网站,你也会得到更好的支持。如果有谁在window版本手机上测试,麻烦告诉我一下测试结果。

Firefox19有点问题,你需要在观察一下它。例如,在这个案例中,我无法近死侧边栏为20%。这个只是折叠到内容的宽度里,这样说或许有点武断。我需要设置“-moz-box-flex:1”,否则主内容(60%)会伸展到和最宽的段落,就像是段落设置了“white-space:nowrap”,这一点简直是莫名其妙。

DEMO

CodePen的案例

译者手语:整个翻译依照原文线路进行,并在翻译过程略加了个人对技术的理解。如果翻译有不对之处,还烦请同行朋友指点。谢谢!

如需转载烦请注明出处:

英文原文:http://css-tricks.com/using-flexbox

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索display
, 浏览器
, firefox
, 容器
, 语法
, ios 列表 伸缩
, Group容器
, Native之FlexBox
, FlexBox实例
, 新语法
Flexbox
uc浏览器不支持flex、flex 浏览器兼容、flex布局浏览器兼容性、微信浏览器 flex、flex浏览器支持,以便于您获取更多的相关知识。

时间: 2024-10-10 20:47:01

Flexbox新语法旧语法混用让浏览器完美的展示的相关文章

浅析PHP7新功能及语法变化总结_php实例

标量类型声明 有两种模式: 强制 (默认) 和 严格模式. 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool).在旧版中,函数的参数声明只能是(Array $arr).(CLassName $obj)等,基本类型比如Int,String等是不能够被声明的 <?php function check(int $bool){ var_dump($bool); } check(1); check(tr

浅析PHP7新功能及语法变化总结

标量类型声明 有两种模式: 强制 (默认) 和 严格模式. 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool).在旧版中,函数的参数声明只能是(Array $arr).(CLassName $obj)等,基本类型比如Int,String等是不能够被声明的 <?php function check(int $bool){ var_dump($bool); } check(1); check(tr

苹果iCloud云计算被指新瓶装旧酒:曾多次改版

导语:美国<连线>杂志网络版今天撰文称,苹果即将发布的iCloud云计算服务其实是新瓶装旧酒,但这也表明,苹果终于开始重视在线媒体服务业务.以下为文章全文: 多次改版 苹果宣布,即将发布的网络媒体服务将被命名为iCloud.但不要被这个好听地名字唬住,苹果此前其实已经尝试过这种服务,而采用iCloud这一全新的品牌其实是对苹果最失败的产品之一进行的返工. 苹果周二就下周的全球开发者大会(WWDC)发布了官方新闻稿.除了展示Mac OS X Lion和iOS 5操作系统外,苹果CEO史蒂夫·乔布

《连线》杂志:苹果iCloud云计算被指新瓶装旧酒,曾多次改版

导语:美国<连线>杂志网络版今天撰文称,苹果即将发布的iCloud云计算服务其实是新瓶装旧酒,但这也表明,苹果终于开始重视在线媒体服务业务. 以下为文章全文: 多次改版 苹果宣布,即将发布的网络媒体服务将被命名为iCloud.但不要被这个好听地名字唬住,苹果此前其实已经尝试过这种服务,而采用iCloud这一全新的品牌其实是对苹果最失败的产品之一进行的返工. 苹果周二就下周的全球开发者大会(WWDC)发布了官方新闻稿.除了展示Mac OS X Lion和iOS 5操作系统外,苹果CEO史蒂夫·乔

PS将新拍照片“整新如旧”

  老照片总给人饱经沧桑.内涵深刻的印象,因此成为那些"玩感觉"的摄友最爱.虽然现在数码相机都有所谓的"旧照片"模式,但是这种千篇一律的效果很难让挑剔的摄友满意,这里我们介绍一种将照片"整新如旧"的方法,就算是抛砖引玉吧. 此方法大部分效果都是用Photoshop 自身的功能实现,但在处理照片边缘的时候,使用到了Alien Skin Xenofex 2.0中新加入的Burnt Edges(烧焦边缘)效果. 调整尺寸 选择合适的照片后,首先就是要对

论双十一的“新与旧”:流量是个问题

摘要: 12月5日消息,第九届中国网上零售年会今日在重庆世纪金源大饭店举行.会议围绕实体经济如何借势电商年会主题,分别就大形势:好不好?.电商产业:行不行?.移动电商:能不能 12月5日消息,"第九届中国网上零售年会"今日在重庆世纪金源大饭店举行.会议围绕"实体经济如何借势电商"年会主题,分别就"大形势:好不好?"."电商产业:行不行?"."移动电商:能不能?"."网上零售:会不会?"等

新瓶装旧酒?苹果iPhone5中文版广告没诚意

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   作为除了美国本土外最大的消费地区,中国市场对于苹果愈来愈重要,随着苹果CEO的中国之行,苹果对中国市场的重视程度也在不断增加.近日,苹果悄无声息地将中国区官网的英文版iPhone5广告更换成了颇具中国特色的中文版. 这四支中文版iPhone 5广告在中国苹果官网中的名字分别为:拇指.茄子.物理学.耳朵,分别讲述了iPhone 5的尺寸.全景拍照.机身设计.Ear

揭底诺基亚“三大技术突破”:新瓶装旧酒

诺基亚官方博客今天凌晨在发布会进行过程中更新一篇题为<诺基亚Lumia 920实现http://www.aliyun.com/zixun/aggregation/13073.html">手机摄影.高清屏幕显示.无线充电三大技术突破>的文章.虽名为博客,但"对话诺基亚"基本可理解为诺基亚官方的声音.而题目最后的六个字,也直白地表示了诺基亚对于Lumia 920在技术创新力度及实用成效的 肯定. 那么,我们就来详细解读下诺基亚眼中的三大技术突破. 诺基亚新旗舰L

泰禾地产资金术:拿地超百亿,以新还旧降成本

1年时间,泰禾地产借信托让资金跑了一个轮回,但轮回结束,资金的故事却还远没有结束. 2012年9月拿地,7个月后发行信托产品募资,开发项目动工,到11个月后房屋销售基本完成,单其中一项销售额就已经超过土地成本,项目不到1年时间已完成资金周转.在这个节点,泰禾选择提前终止信托计划,公告的原因为信托计划的信托目的已实现. 虽然对于房地产信托来说,信托计划提前终止属于常规动作,但泰禾泉州华大股权项目的终止并非常见的融资方资金缓解那么简单. 提前结束的信托计划 最近在关注信托产品信息时,一个信托计划提前