导航栏中的徽标在 Internet Explorer 中未正确居中

Posted

技术标签:

【中文标题】导航栏中的徽标在 Internet Explorer 中未正确居中【英文标题】:Logo in navbar not properly centered in Internet Explorer 【发布时间】:2021-05-20 19:47:00 【问题描述】:

我有一个导航器,其徽标使用 flexbox 居中,但在 IE 中未正确居中。有谁知道为什么会这样?

开发版本位于 etc.lukesmedia.com

谢谢!

【问题讨论】:

什么版本的ie? 所有版本的 IE。我最关心的是 IE 11。 “所有版本”就像在 IE6 中一样?您应该更具体地了解您需要支持哪些版本。话虽如此,IE11 今年即将结束生命,所以你可能不想再为它烦恼了。 that 说,这里有一个记录在案的 flexbox 错误列表:github.com/philipwalton/flexbugs 【参考方案1】:

我尝试使用 IE 11 和 Google Chrome 浏览器访问该网站。

我发现在 IE 11 浏览器中,当屏幕大于 700 像素时,徽标会出现在中心偏左一点的位置。

在 Chrome 浏览器中,当屏幕大于 700px 时,logo 出现在左侧,当屏幕小于 700px 时,logo 出现在中间。

所以看起来您希望在 IE 11 浏览器中获得类似的结果。

我尝试修改您的 CSS 代码以获得类似的结果。

下面是修改后的例子:

<!doctype html>
<html>
<head>
<title>demo</title>
<style>
html,
body 
    margin: 0px;
    padding: 0px;
    min-width: 300px;

.navbar 
    display: -webkit-box;
    display: -webkit-flex;
    display: -moz-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
    -moz-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -moz-box-align: center;
    -ms-flex-align: center;
    align-items: center;

    z-index: 100;

    padding: 20px 0px;
    height: 80px;

    background-color: var(--super-light-grey, white);
    -webkit-filter: drop-shadow(10px 10px 50px rgba(0, 0, 0, 0.07));
            filter: drop-shadow(10px 10px 50px rgba(0, 0, 0, 0.07));


.navbar .content 
  
    width: 80%;
    height: 100%;
    font-family: var(--main-font, sans-serif);
    font-size: 1.3em;
    font-weight: 800;
    text-decoration: none;
    color: inherit;
    text-align: center;


.navbar .content img 
    height: 100%;


@supports not (-ms-high-contrast: none) 
  .navbar .content 
    margin: auto;
    width: 80%;
    height: 100%;
    font-family: var(--main-font, sans-serif);
    font-size: 1.3em;
    font-weight: 800;
    text-decoration: none;
    color: inherit;
    text-align: center;
   


@media screen and (min-width: 700px) 
  .navbar .content 
        text-align: unset;
    
  *::-ms-backdrop, .navbar .content 
        text-align: left;
    


@media screen and (min-width: 800px) 
    .navbar 
        -webkit-box-pack: left;
        -webkit-justify-content: left;
        -moz-box-pack: left;
        -ms-flex-pack: left;
        justify-content: left;
    


</style>
</head>
<body>

  <HEADER class="navbar">
    <A class="content">
      <IMG  src="logo.png"> 
    </A>         
  </HEADER>         
</body>
</html> 

注意:建议你将以上代码保存到HTML文件中,修改logo的路径,尝试在IE 11浏览器中运行。

IE 11 中的输出:

在使用 IE 11 浏览器对其进行测试后,您可以尝试在您的原始代码中实现它以解决问题。此外,您可以尝试根据自己的需求修改代码。

【讨论】:

【参考方案2】:

在 main.css 文件的第 298 行,您使用的是text-align: unset,但 IE 似乎不喜欢这样。尝试更改为text-align: left,这应该适用于所有情况。

原创

@media screen and (min-width: 700px) 
    .navbar .content 
        text-align: unset;
    

修改

@media screen and (min-width: 700px) 
    .navbar .content 
        text-align: left;
    

【讨论】:

【参考方案3】:

IE 不喜欢margin:auto

您可以使用IE-specific css rule 删除它:

@media screen and (min-width:0\0) 
   .navbar .content
      margin:none 
   


【讨论】:

【参考方案4】:

尝试使用其他浏览器,例如 chrome 或 firefox。 IE 不适合 HTML。一旦你在对象的 css 中使用 chrome 或 firefox,你应该有 text-align: center;top: 50%;

【讨论】:

有些人还是需要支持IE。这无助于回答问题。

以上是关于导航栏中的徽标在 Internet Explorer 中未正确居中的主要内容,如果未能解决你的问题,请参考以下文章

Vuetify 导航栏中的中心徽标

Bootstrap 导航栏中的左侧徽标和居中标题

在浮动导航栏中调整徽标大小

Bootstrap - 如何将徽标添加到导航栏类?

Bootstrap 导航栏中的中心菜单项

导航栏中的 Twitter Bootstrap 搜索框在 chrome 和 firefox 中呈现不同