HTML CSS Navbar Spacing

时间:2013-10-25 01:53:32

标签: html css navbar spacing

我创建了一个CSS Navbar,但在每个“navbar-item”之间,空间很小。我根本不希望有一个anyspace!有没有办法在不改变每个导航栏项左边距的情况下实现这一点?

    <!doctype html>
<html>
    <head>
        <title>Home - UnhandyFir9</title>
        <style>
            #wrapper {
                box-shadow: 0px 0px 20px 10px black;
                left: 0px;
                top: 0px;
                margin: auto;
                margin-top: 30px;
                width: 800px;
                background-color: rgb(200, 200, 200);
                font-family: sans-serif;
            }
            #top-notification {
                display: inline-block;
                width: 100%;
                height: 20px;
                background-color: lightblue;
                text-align: center;
            }
            #navbar-core {
                width: 100%;
                height: 30px;
                background-color: lightgreen;
            }
            #navbar-item {
                display: inline-block;
                width: 100px;
                height: 30px;
                text-align: center;
                background-color: green;
                color: white;
            }
        </style>
    </head>
    <body>
        <div id="wrapper">
            <span id="top-notification">== Hi! Our site was just recently launched, so you may expect alot of bugs! Sorry 'bout that! ==</span>
            <div id="navbar-core">
                <a href="home.html" id="navbar-item">Home</a>
                <a href="lessons.html" id="navbar-item">Lessons</a>
                <a href="aboutus.html" id="navbar-item">About Us</a>
                <a href="donate.html" id="navbar-item">Donate</a>
            </div>
        </div>
    </body>
</html>

enter image description here

6 个答案:

答案 0 :(得分:1)

问题出在display:inline-block - 它将元素减少为内联块,这意味着它们的行为与HTML中的所有其他内联内容相同。由于锚元素之间有空格,它总是折叠成一个空格,所以你看到的是当前字体大小之间的实际“空格”,就像句子中的单词之间一样。你可以通过在容器上应用font-size:0来解决这个问题,但这很麻烦,因为你必须为孩子重置它。建议的方法是仅使用float:left并正确手动设置父级的大小,并将项目设置为height:100%

使用具有相同ID的多个元素是错误的但不会导致此问题 - 但仍应修复。

答案 1 :(得分:1)

正如我在评论中提到的,ID必须是唯一的,因此请改用类。话虽如此,您的链接是内联元素,并且对空白区域敏感,因此要么将它们向左浮动,要么删除代码中元素之间的空白区域。

例如:

.navbar-item {
    display: inline-block;
    width: 100px;
    height: 30px;
    text-align: center;
    background-color: green;
    color: white;
    float:left;
}

<强> jsFiddle example

已删除空格 jsFiddle example

答案 2 :(得分:0)

首先,

#navbar-item {
    display: inline-block;
    width: 100px;
    height: 30px;
    text-align: center;
    background-color: green;
    color: white;
}

将其更改为class而不是idId是唯一的,只能在页面上使用一次,但可以反复使用一个类。

我很确定这个空间来自于此,但我会做一个小提琴来测试,

  

display:inline-block;

您可以将display: inline-block;更改为float: left;并使其没有空格。

JSFIDDLE

答案 3 :(得分:0)

试试这个;

.navbar-item {
  display:block;
  float:left;
  width: 100px;
  height: 30px;
  text-align: center;
  background-color: green;
  color: white;
}

<div id="wrapper">
<span id="top-notification">== Hi! Our site was just recently launched, so you may expect alot of bugs! Sorry 'bout that! ==</span>
<div id="navbar-core">
<a href="home.html" class="navbar-item">Home</a>
<a href="lessons.html" class="navbar-item">Lessons</a>
<a href="aboutus.html" class="navbar-item">About Us</a>
<a href="donate.html" class="navbar-item">Donate</a>
</div>

答案 4 :(得分:0)

使用float: left;代替display: inline-block;默认情况下使用内联块将具有4px边距,但默认情况下使用float: left;没有空格。并且每个a element没有id使用类,id是唯一的,不应该重复。

.navbar-item {
     /*display: inline-block;*/
     float: left;
     width: 100px;
     height: 30px;
     text-align: center;
     background-color: green;
     color: white;
}

如果您仍想使用inline-block代替float: left;,则应使用margin-left: -4px;

答案 5 :(得分:-1)

为了快速解决您的问题,您可以使用span包装链接并为其设置更暗的背景:

<div id="navbar-core">
    <span class="navbar-inner-wrapper">
            <a href="home.html" id="navbar-item">Home</a>
            <a href="lessons.html" id="navbar-item">Lessons</a>
            <a href="aboutus.html" id="navbar-item">About Us</a>
            <a href="donate.html" id="navbar-item">Donate</a>
    </span>
</div>

然后将其添加到您的CSS:

.navbar-inner-wrapper {
    background-color: green;
}