Chrome没有获得居中的利润,可以在safari和firefox中使用

时间:2015-11-10 16:55:06

标签: css html5 css3

我遇到了一个问题,即Google Chrome浏览器没有选择左边距和右边距,以便在我的菜单标题中居中。我搜索过,但似乎无法找到有效的解决方案。它在Safari和Firefox中运行良好。有人可以解释或指出我正确的方向吗?我希望找到一个没有css hacks的解决方案。

菜单是一个包含5个元素的水平列表,第3个元素是我将放置徽标和标题的元素。我将所有三个放入一个跨度中,我给带有徽标的跨度一个bg图像和一个文本缩进。标题的跨度在所有浏览器中都表现得非常好,带有徽标的跨度只能在safari en firefox中显示,而不是在chrome中。 我在加载样式表之前加载了normalize.css。

<!-- language: lang-html -->
<nav class="main-nav">
        <ul id="menu" class="main-nav-list">
          <li class="main-nav-item main-nav-hover"><a href="#pagesection" class="main-nav-link test" title="Over ons">Over ons</a></li>
          <li class="main-nav-item main-nav-hover"><a href="#pagesection" class="main-nav-link" title="Wat we doen">Wat we doen</a></li>
           <li class="main-nav-item">
            <div class="main-nav-home">
                <span class="main-nav-title">title</span>
                <span class="main-nav-subtitle">slogan</span>
                <span class="main-nav-logo">Logo</span>
              </div>
            </li>
          <li class="main-nav-item main-nav-hover"><a href="#pagesection" class="main-nav-link" title="Portfolio">Portfolio</a></li>
          <li class="main-nav-item main-nav-hover"><a href="#pagesection" class="main-nav-link" title="Contact">Contact</a></li>
        </ul>
    </nav>

<!-- language: css -->
nav {
    position: fixed;
    background-color: #000;
    width: 100%;
    height: 100px;
    top: 0;
    left: 0;
    z-index: 10;
    border-bottom: 5px solid #333;
}
.main-nav {
    width: 100%;
}
.main-nav-list {
    position: relative;
    overflow: hidden;
    padding: 0;
    display: inline;
    margin: 0;
}
.main-nav-item {
    position: relative;
    display: block;
    list-style: none;
    float: left;
    text-align: center;
    width: 20%; /* fallback for non-calc() browsers */
    width: calc(100% / 5);
    height: auto;
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

.main-nav-home {
    position: relative;
    width: 100%;
    height: 300px;
    margin-left: auto;
    margin-right: auto;
}
.main-nav-title {
  text-decoration: none;
  display : block;
  color: #00ffff;
  font-size: 34px;
  font-family: 'trenchthin';
  text-align: center;
  color: #fff;
  width: 100%;
  margin-top: -1%;
  }
.main-nav-subtitle {
    text-decoration: none;
    display : block;
    color: #00ffff;
    font-size: 17px;
    font-family: 'nexa_lightregular';
    white-space: nowrap;
    width: 100%;
    margin-top: -3%;
    margin-left: -2px;
}
.main-nav-logo {
    display : block;
    text-indent: -9999px;
    z-index: 11;
    position: fixed;
    width: 20%;
    height: 100px;
    margin-left: auto;
    margin-right: auto;
    color: #fff;
    text-decoration: none;
    border: 0;
    padding : 0;
    background : url('../images/logo.png');
    background-size: 100px 100px;
    background-repeat: no-repeat;
    background-position: center;
}

2 个答案:

答案 0 :(得分:0)

<span class="main-nav-logo">Logo</span>

上的CSS样式存在一些问题

您正在使用忽略左右自动边距的position: fixed

您可以通过将样式更改为:

来解决
.main-nav-logo {
  display : block;
  text-indent: -9999px;
  z-index: 11;
  position: fixed;
  left: 50%;
  width: 20%;
  height: 100px;
  margin-left: -10%; /* half of the width of the element */
  color: #fff;
  text-decoration: none;
  border: 0;
  padding : 0;
  background : url('../images/logo.png');
  background-size: 100px 100px;
  background-repeat: no-repeat;
  background-position: center;
}

通过添加left: 50%margin-left: -10%width: 20%的一半,您将使其居中。

以下JSFIDDLE显示解决方案减去text-indent: -9999px;以显示其居中。

希望有所帮助。

答案 1 :(得分:0)

在发布到stackoverflow后重新阅读我的问题后,我想通了! 我删除了徽标跨度,并将背景添加到main-nav-home div中,现在一切都很完美。

无论如何,谢谢! : - )

已解决!