【发布时间】:2017-05-09 01:09:10
【问题描述】:
在将此问题标记为重复之前,请先看看这个 JS Fiddle:https://jsfiddle.net/751cg8d1/10/
HTML:
<div class="opLandingContainer">
<ul class="opWelcomeNavBar affix">
<li class="opWelcomeNavBarLogo" >
<a href="/">
<img class="ui image" src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" />
</a>
</li>
<li style="right: 0; position: absolute" class="opWelcomeNavBarItem nondropdown">
<a style="padding-right: 0" href="/sign-up">Sign Up</a>
<a href="/sign-in">Sign In</a>
</li>
</ul>
</div>
CSS
.opWelcomeNavBarLogo {
position:absolute;
width:225px;
display:inline-block;
}
.opWelcomeNavBarLogo img {
height: 68px;
}
@media(max-width:600px) {
.opWelcomeNavBarLogo {
width: 125px !important;
}
.opWelcomeNavBarLogo img {
height: 38px !important;
}
}
.opWelcomeNavBar.affix a {
color:black;
}
.opWelcomeNavBar.affix {
background-color: rgba(255, 255, 255, 0.9);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
}
.opWelcomeNavBar{
border:0;
top:0;
right:0;
left:0;
height:90px;
z-index:1;
margin:0;
position:fixed;
list-style-type: none;
-webkit-transition: background-color 0.3s ease;
transition: background-color 0.3s ease;
/*border: 0 none;*/
display: flex;
align-items: center;
justify-content: space-between;
/*display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-pack: justify;
-moz-box-pack: justify;
-ms-flex-pack: justify;
-webkit-justify-content: space-between;
justify-content: space-between;
-webkit-box-align: center;
-moz-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;*/
}
.opWelcomeNavBar a:hover{
color: #ababab;
text-decoration:none;
}
.opWelcomeNavBar a {
color:white;
font-size:1.3em;
text-decoration:none;
height:50px;
padding:15px;
border:2px solid transparent;
}
此代码的目标是将容器中的某些项目垂直居中(在本例中,顶部导航栏中的某些菜单项)。
如果您在 Chrome 中查看小提琴,则一切正常。但是,在 Safari 10 中,项目不是垂直居中的。我尝试使用每种类型的供应商前缀(在这个版本的 Safari 中应该不需要),但这些更改似乎都不起作用。根据我的阅读,这个版本的 Safari 应该完全支持 flex 定位规范。我还在这里查看了常见的 flex 错误:https://github.com/philipwalton/flexbugs,但这些似乎都不适用于我在此示例中看到的内容。
Chrome 中的正确视图:
Safari 10 中的视图不正确:
【问题讨论】:
-
我在 Safari 9 中得到了同样的结果,我认为这都是 Safari。
-
你为什么在 flex 孩子上使用
position: absolute;?如果您删除 jsfiddle.net/751cg8d1/11,则效果很好