Flexbox 在 Safari 中不起作用
Posted
技术标签:
【中文标题】Flexbox 在 Safari 中不起作用【英文标题】:Flexbox not working in Safari 【发布时间】:2015-05-12 15:11:17 【问题描述】:我正在创建的布局在 Safari 中无法运行,尽管它在 Chrome 中运行良好。我感觉它与.wrapper
或.frame
有关,但我尝试将Flex Shrink 值设置为0
无济于事。
JSFiddle
.frame
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
height: 100vh;
position: relative;
overflow: hidden;
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
-webkit-flex-wrap: nowrap;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
-webkit-flex-flow: column nowrap;
-ms-flex-flow: column nowrap;
flex-flow: column nowrap;
-webkit-align-items: stretch;
-ms-flex-align: stretch;
align-items: stretch;
-webkit-justify-content: flex-start;
-ms-flex-pack: start;
justify-content: flex-start;
-webkit-order: 0;
-ms-flex-order: 0;
order: 0;
.wrapper
-webkit-flex: 1 0 auto !important;
-ms-flex: 1 0 auto !important;
flex: 1 0 auto !important;
-webkit-flex-wrap: nowrap !important;
-ms-flex-wrap: nowrap !important;
flex-wrap: nowrap !important;
.row,
.wrapper
box-sizing: border-box;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex: 0 0 auto;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
我也觉得可能有更好的方式来使用 Flexbox,而不需要包装器,但我无法理解它。
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:问题出在您的 .content
班级上。具体来说,在这一段代码中。
.content
display: block;
flex: 1 1 auto;
background: #ddd;
height: auto;
overflow-y: auto;
overflow-x: hidden;
padding-right:.5em;
padding-bottom:.5em;
Safari 仍然需要 -webkit-
前缀才能使用 flexbox。因此,您需要将 -webkit-
前缀添加到您的 flex
属性。
示例(JSFiddle):
.content
display: block;
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
background: #ddd;
height: auto;
overflow-y: auto;
overflow-x: hidden;
padding-right:.5em;
padding-bottom:.5em;
【讨论】:
在 Safari 中我仍然有同样的问题,即使添加了前缀。 .content div 被缩小了,并且在其中看不到任何列。 tinypic.com/view.php?pic=1256jwn&s=8#.VP-LI_msV8E @ChrisDance 您使用的是什么版本的 Safari? 我觉得你在那里回答了我的问题。我认为 Flexbox 不能在这个版本的 Safari 上运行,但它是适用于 Windows 的最新版本? @ChrisDance 是的,Apple 停止为 Windows 开发 Safari。 Safari 6 及以下版本仅支持旧规范。 难以置信。 Safari 仍然需要一个公认的 CSS 标准(如 flexbox)的前缀?他们什么时候会放弃那个供应商前缀?以上是关于Flexbox 在 Safari 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 flexbox 代码在 Safari 5 和 6 中不起作用?
为啥我的 Flexbox 粘滞页脚在 Safari 中不起作用?
嵌套的 Flexbox 100% 高度在 Safari 中不起作用 [重复]