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 覆盖的主要内容,如果未能解决你的问题,请参考以下文章

iOS 5.0 Safari 不在文本框中垂直居中占位符

在本机反应中,Flexbox中的文本垂直居中对齐

如何使用 flexbox 垂直居中文本? [复制]

Safari 中的垂直居中

iOS 版 Safari 上垂直弹性框中的最后一个元素在横向模式下被裁剪

带有 flexbox 的引导列在 iOS 和 Safari 上的宽度不合适