在<li>元素之间添加空格</li>

时间:2012-08-10 14:29:00

标签: css

我有一个导航菜单,似乎我无法在margin: 3px;元素之间添加空格(<li>)。

您可以在此jsfiddle或更低版本上查看HTML和CSS代码。

你会看到我在border-bottom: 2px solid #fff;添加#access li来模拟元素之间的空间,但这不会起作用,因为在导航菜单下我会有一堆不同的颜色。如果我添加margin-button: 2px,则无效。

这是HTML:

<nav id="access" role="navigation">
    <div class="menu-header-menu-container">
        <ul id="menu-header-menu" class="menu">
            <li id="menu-item-41" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-41">
                <a href="http://localhost:8888/fullstream/?page_id=5">About Us</a>
            </li>
            <li id="menu-item-35" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-35">
                <a href="http://localhost:8888/fullstream/?page_id=7">Services</a>
            </li>
            <li id="menu-item-34" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-34">
                <a href="http://localhost:8888/fullstream/?page_id=9">Environmental Surface Cleaning</a>
            </li>
            <li id="menu-item-33" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-33">
                <a href="http://localhost:8888/fullstream/?page_id=11">Regulations</a>
            </li>
            <li id="menu-item-32" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32">
                <a href="http://localhost:8888/fullstream/?page_id=13">Contact Us</a>
            </li>
       </ul>
</div>

这是CSS:

#access {
    background: #0f84e8; /* Show a solid color for older browsers */
    display: block;
    margin: 0 auto 6px 55px;
    position: absolute;
    top: 100px;
    z-index: 9999;
}
#access ul {
    font-size: 13px;
    list-style: none;
    margin: 0 0 0 -0.8125em;
    padding-left: 0;
}
#access li {
    position: relative;
    padding-left: 11px;
}
#access a {
    border-bottom: 2px solid #fff;
    color: #eee;
    display: block;
    line-height: 3.333em;
    padding: 0 10px 0 20px;
    text-decoration: none;
}

#access li:hover > a,
#access ul ul :hover > a,
#access a:focus {
    background: #efefef;
}
#access li:hover > a,
#access a:focus {
    background: #f9f9f9; /* Show a solid color for older browsers */
    background: -moz-linear-gradient(#f9f9f9, #e5e5e5);
    background: -o-linear-gradient(#f9f9f9, #e5e5e5);
    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#f9f9f9), to(#e5e5e5)); /* Older webkit syntax */
    background: -webkit-linear-gradient(#f9f9f9, #e5e5e5);
    color: #373737;
}
#access ul li:hover > ul {
    display: block;
}

6 个答案:

答案 0 :(得分:80)

添加:

margin: 0 0 3px 0;

到您的#access li并移动

background: #0f84e8; /* Show a solid color for older browsers */

#access a并取出border-bottom。然后它会工作

此处: http://jsfiddle.net/bpmKW/4/

答案 1 :(得分:23)

您可以使用margin属性:

li.menu-item {
   margin:0 0 10px 0;   
}

演示:http://jsfiddle.net/UAXyd/

答案 2 :(得分:4)

大多数答案不正确,因为它们还会在最后一个 <li> 上添加底部空间,因此它们不会仅在 <li> 之间添加空间{1}}!

最准确、最有效的解决方案如下:

li.menu-item:not(:last-child) { 
   margin-bottom: 3px;  
}

解释: 通过使用 :not(:last-child),样式将应用于除最后一个之外的所有项目 (li.menu-item)。

答案 3 :(得分:2)

由于您要求 space between ,我会在最后一项中添加覆盖以消除额外的保证金:

&#13;
&#13;
li {
  background: red;
  margin-bottom: 40px;
}

li:last-child {
 margin-bottom: 0px;
}

ul {
  background: silver;
  padding: 1px;  
  padding-left: 40px;
}
&#13;
<ul>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
<li>Item 1</li>
</ul>
&#13;
&#13;
&#13;

它的结果可能在任何时候都不是直观的,因为margin-collapsing和其他东西...在我已经包含的示例片段中,我添加了一个小{{1} } 1px padding - 元素以防止崩溃。尝试删除ul - 规则,您会看到最后一项现在扩展了li:last-child - 元素的大小。

答案 4 :(得分:1)

我只想说伙计们:

  

仅使用保证金

如果您使用保证金,则在<li>之间添加空格要容易得多。

答案 5 :(得分:0)

#access a {
    border-bottom: 2px solid #fff;
    color: #eee;
    display: block;
    line-height: 3.333em;
    padding: 0 10px 0 20px;
    text-decoration: none;
}

我看到您使用了行高,但是您将其赋予了<a>标签而不是<ul> 试试这个:

#access ul {line-height:3.333em;}

然后,您无需再玩边距游戏。