我遇到了一个问题,即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;
}
答案 0 :(得分:0)
<span class="main-nav-logo">Logo</span>
您正在使用忽略左右自动边距的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中,现在一切都很完美。
无论如何,谢谢! : - )
已解决!