iOS Safari中的垂直居中弹性框叠加

时间:2013-06-20 12:00:26

标签: iphone css css3 layout flexbox

我的flexbox overlay

有以下代码
.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模拟器)中,它并不是垂直居中的。我需要做些什么才能让它发挥作用?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

我有同样的问题;使用align-items: center对齐Flex容器的子项(一个标题和一个图标)。图标在中心处正确对齐,但由于它的高度,我的标题与顶部对齐。

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