10

我的 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 模拟器)中它不会垂直居中。我需要改变什么才能让它工作?

4

2 回答 2

35

经过一段时间的研究,我发现 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;
}
于 2013-06-20T13:45:05.257 回答
0

我有同样的问题; 将 flex 容器的子项(一个标题和一个图标)与align-items: center. 图标在中心正确对齐,但我的标题与顶部对齐,因为它的高度。

添加align-self: center到标题 CSS 解决了它!

于 2017-06-20T13:35:17.857 回答