我的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模拟器)中,它并不是垂直居中的。我需要做些什么才能让它发挥作用?
答案 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解决了它!