html - 无序列表导航栏元素有奇怪的差距

标签 html css navbar

我正在尝试使用 <ul> 编写导航栏与 inline元素,但元素之间都有一个似乎无处不在的差距。也就是说,当悬停链接时,阴影框应与周围的框对齐。当前页面如下所示:http://wictorht.at.ifi.uio.no/ .是什么造成了这些差距?

HTML:

<body>
    <div id="main">
        <ul class="header">
            <li class="title">wictorht</li>
            <li class="header">
            <a class="header" href="https://bitbucket.org/htor/dwmst/src">dwms</a>
            </li>
            <li class="header">
            <a class="header" href="https://bitbucket.org/htor/linux/src">linux</a>
            </li>
            <li class="header">
            <a class="header" href="http://www.fsf.org/register_form?referrer=10397">fsf</a>
            </li>
            <li class="header">
            <a class="header" href="http://stackexchange.com/users/1006063">stackexhange</a>
            </li>
        </ul>
    </div>
</body>

CSS:

body {
    background: #666666;
    color: #c0c0c0;
    margin: 0;
}

a.header {
    text-decoration: none;
    padding: 10px;
    margin: 0;
}

a.header:hover, a.header:active {
    background-color: #666666;
    color: #c0c0c0;
}

ul.header {
    background-color: #c1c1c1;
    color: #666666;
    list-style: none;
    padding: 10px 10px 10px 0;
    margin: 0 0 10px 0;
}

li.header {
    display: inline;
}

li.title {
    background-color: #000000;
    color: #bada55;
    display: inline;
    padding: 10px;
}

最佳答案

这是因为在客户端浏览器呈现时,元素之间的所有空白(包括换行符)都会折叠成一个空格。要隐藏空格,您可以:

  1. 去掉li之间的空格元素:

    <li><!-- content --></li><li><!-- more content --></li>
    
  2. 设置font-size parent 的ul0 , 并重新定义 font-sizeli元素:

    ul {
        font-size: 0;
    }
    
    ul li {
        font-size: 14px;
    }
    
  3. 注释掉 li 之间的空白元素:

    <li>Content</li><!--
    --><li>Next li</li>
    
  4. float li元素而不是使用 display: inline , 它通过将元素从正常流中取出来删除空格:

    ul {
        overflow: hidden; /* to keep the li 'visibily' within the bounds of the ul */
    }
    
    ul li {
        float: left;
    }
    
  5. 关闭li标记在下一行,下一个 li 之前开始标记这对我来说有点不对劲,但它有效的:

    <li>First li</li
    ><li>Second li</li>
    

(或者,显然,将 next li 开始标签放在上一行,紧跟在前一个元素的结束标签之后:

    <li>First li</li><
    li>Second li</li>

)

关于html - 无序列表导航栏元素有奇怪的差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168194/

相关文章:

javascript - HTML 和 Javascript "Hamburger Menu"不工作

html - 我的 isp ftp 的背景图像完整路径 url?

javascript - 来自HTML图像的jsPDF导致pdf为空

javascript - 未捕获的类型错误 : Cannot read property 'getContext' of null at zoom. html:8

html - CSS HTML li 元素总是在右边/左边,隐藏其余部分

html - CSS 导航栏不应该离开行和相关文本

javascript - 按下鼠标时将键盘滚动事件从一个元素转发到另一个元素

javascript - 当 Angular 更改时,元素符号颜色无法在 Chrome 中正确显示

javascript - 单击 jQuery 从相同的 div 中选择一个

html - 如何给三 Angular 形设置边框