iOS Safari 中的垂直居中 flexbox 覆盖
Posted
技术标签:
【中文标题】iOS Safari 中的垂直居中 flexbox 覆盖【英文标题】:Vertical centering flexbox overlay in iOS safari 【发布时间】:2013-06-17 06:41:24 【问题描述】:我的 flexbox 覆盖有以下代码
.overlay-content-wrapper
display: -webkit-flex;
display: flex;
position:fixed;
height: 100%;
width: 100%;
top: 0;
z-index: 999;
background-color: rgba(0, 0, 0, 0.6);
padding: 8px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
.overlay-content
padding: 8px;
min-height: 10px;
min-width: 10px;
margin: auto;
background-color: #fff;
border-radius: 8px;
border: 1px solid #a5a5a5;
position: relative;
<div class="overlay-content-wrapper"><div class="overlay-content">Some content</div></div>
在 Chrome 中它可以完美运行,但在 ios Safari(v6 模拟器)中它不会垂直居中。我需要进行哪些更改才能使其正常工作?
【问题讨论】:
【参考方案1】:我遇到了同样的问题;将 flex 容器的子项(一个标题和一个图标)与 align-items: center
对齐。图标在中心正确对齐,但我的标题与顶部对齐,因为它的高度。
在标题 CSS 中添加 align-self: center
解决了它!
【讨论】:
【参考方案2】:经过一段时间的研究,我发现 iOS safari 支持一种带有 webkit 前缀的旧语法(考虑到它的市场份额,令人惊讶的是,更多的 flexbox 教程/工具不包含旧语法......但是嘿嘿) .
所以这是我的最终 CSS,它应该适用于支持某些版本的 flexbox 的所有浏览器,并在其他浏览器中回退到仅水平居中。
.overlay-content-wrapper
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;
display: flex;
-webkit-box-align: center;
-webkit-flex-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
position:fixed;
height: 100%;
width: 100%;
top: 0;
z-index: 999;
background-color: rgba(0, 0, 0, 0.6);
padding: 8px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
.overlay-content
padding: 8px;
min-height: 10px;
min-width: 10px;
margin: auto;
background-color: #fff;
border-radius: 8px;
border: 1px solid #a5a5a5;
position: relative;
【讨论】:
以上是关于iOS Safari 中的垂直居中 flexbox 覆盖的主要内容,如果未能解决你的问题,请参考以下文章