如何让这个 <SPAN> 元素跨越 100% 的 LI?

How to I get this <SPAN> element to span 100% of LI?

我正在处理这个导航栏,我快完成了,但我只有一个问题需要解决。我的导航使用 jQuery 和代码目标 <SPAN> 元素来打开子菜单。我的问题是,出于某种原因,跨度不包括整个 LI 区域。有一大堆 "empty" space 你可以点击,什么也没有发生。如何让 span 覆盖整个 LI 区域?我试过弄乱宽度、填充和边距,并且 none 有效。

这是 jsFiddle

CSS

#navbar {
        display: block;
        clear: both;
        width: 100%;
        height: auto;
        margin: 0px;
        padding: 0%; 
        background-color: #29568F;
        border-bottom: 3px solid #29568F;
    }

    #menu-icon {
        display: inline-block;
        float: left;
    }

    #menu-icon img {
        height: 16px;
        width: 21px;
        align: center;
        margin: 0px 10px 0px 0px;
        position: relative;
        top: 2px;
    }

    #empty-tab{

    }

    .nav-tabs {
        display: inline-block;
        position: relative;
        width: 100%;
        background-color: #29568F;
        margin: 0px 0px;
        padding: 0px;
        list-style-type: none;
        color: white;
        text-decoration: none;
        text-shadow: 2px 2px #000000;
        font: 18px arial, verdana, sans-serif;
    }

    .nav-tabs li {
        float: left;
        cursor: pointer;
        padding: 10px 20px;
        text-align: center;
        border-right: 1px solid lightgrey;
    }

    .nav-tabs li span {
      border: 1px solid red;
    }

    .nav-tabs li:last-child {
        border: 0px;
    }

    .nav-tabs li:hover,
    .nav-tabs > .open {
        background-color: #3399CC;
    }

    #active {
        background-color: #3399CC;
    }

    .nav-tabs li a {
        color: white;
        text-decoration: none;
        text-shadow: 2px 2px #000000;
        font: 18px arial, verdana, sans-serif;
    }

HTML

<div id="navbar">
    <ul class="nav-tabs">
        <li id="menu-icon"><span><img src="/images/menu-icon.png">Menu</span></li>
        <li><span>Dogs <div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>Meet the Breeds<div class="arrow-closed"></div></span>
                    <ul class="drop-menu">
                        <li><span>Sort A - Z <div class="arrow-closed"></div></span>
                            <ul class="slide-menu">
                                <li>Breeds A - F</li>
                                <li>Breeds G - L</li>
                                <li>Breeds M - R</li>
                                <li>Breeds S - Z</li>
                            </ul>
                        </li>
                        <li><span>Sort by AKC Group <div class="arrow-closed"></div></span>
                            <ul class="slide-menu">
                                <li>Sporting Group</li>
                                <li>Working Group</li>
                                <li>Herding Group</li>
                                <li>Hound Group</li>
                                <li>Terrier Group</li>
                                <li>Non-Sporting Group</li>
                                <li>Toy Group</li>
                            </ul>
                        </li>
                        <li><span>Sort by Size <div class="arrow-closed"></div></span>
                            <ul class="slide-menu">
                                <li>X-Small (&le 10in)</li>
                                <li>Small (10in &gt &lt 15in)</li>
                                <li>Medium (15in &ge &lt 21in)</li>
                                <li>Large (21in &ge &lt 28in)</li>
                                <li>X-Large (28in +)</li>
                            </ul>
                        </li>
                        <li><span>Sort by Coat <div class="arrow-closed"></div></span>
                            <ul class="slide-menu">
                                <li>Very Short/Hairless</li>
                                <li>Short Coat</li>
                                <li>Medium Coats</li>
                                <li>Long Coats</li>
                                <li>Non-Shedding Coats</li>
                                <li>Curly Coats</li>
                            </ul>
                        </li>
                        <li><span>Sort by Trait <div class="arrow-closed"></div></span>
                            <ul class="slide-menu">
                                <li>Apartment Suitable</li>
                                <li>Laid Back</li>
                                <li>Athletic</li>
                                <li>Protective</li>
                                <li>Extroverted</li>
                                <li>Pet Friendly</li>
                                <li>Cuddle-Buddies</li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li><span>Supplies<div class="arrow-closed"></div></span>
                    <ul class="drop-menu">
                        <li><span>Crates & Kennels</span></li>
                        <li><span>Bowls & Dishes</span></li>
                        <li><span>Collars & Leashes</span></li>
                        <li><span>Toys & Games</span></li>
                        <li><span>Grooming</span></li>
                        <li><span>Apparal & Accessories</span></li>
                    </ul>
                </li>
                <li><span>Finding a Dog<div class="arrow-closed"></div></span></li>
            </ul>

        </li>
        <li><span>Cats<div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>Cat Links<div class="arrow-closed"></div></span></li>
                <li><span>Cat Links<div class="arrow-closed"></div></span></li>
                <li><span>Cat Links<div class="arrow-closed"></div></span></li>
                <li><span>Cat Links<div class="arrow-closed"></div></span></li>
                <li><span>Cat Links<div class="arrow-closed"></div></span></li>
                <li><span>Cat Links<div class="arrow-closed"></div></span></li>
            </ul>
        </li>
        <li><span>Birds<div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>Bird Links<div class="arrow-closed"></div></span></li>
                <li><span>Bird Links<div class="arrow-closed"></div></span></li>
                <li><span>Bird Links<div class="arrow-closed"></div></span></li>
                <li><span>Bird Links<div class="arrow-closed"></div></span></li>
                <li><span>Bird Links<div class="arrow-closed"></div></span></li>
                <li><span>Bird Links<div class="arrow-closed"></div></span></li>
            </ul>
        </li>
        <li><span>Small Mammals<div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
                <li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
                <li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
                <li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
                <li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
                <li><span>Sm.Mammal Links<div class="arrow-closed"></div></span></li>
            </ul>
        </li>
        <li><span>Articles<div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>Article Links<div class="arrow-closed"></div></span></li>
                <li><span>Article Links<div class="arrow-closed"></div></span></li>
                <li><span>Article Links<div class="arrow-closed"></div></span></li>
                <li><span>Article Links<div class="arrow-closed"></div></span></li>
                <li><span>Article Links<div class="arrow-closed"></div></span></li>
                <li><span>Article Links<div class="arrow-closed"></div></span></li>
            </ul>
        </li>
        <li><span>Videos<div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>Video Links<div class="arrow-closed"></div></span></li>
                <li><span>Video Links<div class="arrow-closed"></div></span></li>
                <li><span>Video Links<div class="arrow-closed"></div></span></li>
                <li><span>Video Links<div class="arrow-closed"></div></span></li>
                <li><span>Video Links<div class="arrow-closed"></div></span></li>
                <li><span>Video Links<div class="arrow-closed"></div></span></li>
            </ul>
        </li>
        <li><span>Updates<div class="arrow-closed"></div></span>
            <ul class="sub-menu">
                <li><span>More Links<div class="arrow-closed"></div></span></li>
                <li><span>More Links<div class="arrow-closed"></div></span></li>
                <li><span>More Links<div class="arrow-closed"></div></span></li>
                <li><span>More Links<div class="arrow-closed"></div></span></li>
                <li><span>More Links<div class="arrow-closed"></div></span></li>
                <li><span>More Links<div class="arrow-closed"></div></span></li>
            </ul>
        </li>
    </ul>
</div>

我用红色勾勒出了跨度。这仅用于可视化目的,因此我(我们)可以看到跨度在哪里。当跨度实际覆盖整个区域时,它将被删除。我还隐藏了箭头的 CSS,因为它导致菜单表现得很古怪。

很简单:

.nav-tabs li {
    float: left;
    /* padding: 10px 20px; */ /* remove */
    cursor: pointer;
    text-align: center;
    border-right: 1px solid lightgrey;
}

.nav-tabs li span {
    display:block; /* add */
    padding: 10px 20px; /* add */
    border: 1px solid red;
}

您需要删除 li 上的填充,因为它不允许子 spanli 中完全展开。而是将填充应用于 span 并添加 display:block;,因为 span 默认情况下是内联元素,只会扩展到足以包含其内容。

演示 http://jsfiddle.net/m65b10ph/1/

另外,为了正确定位第 4 级菜单,您需要 clear 修复,因为其中有浮动跨度。那是因为包含 li 的计算高度为 0:

.drop-menu li:after {
    display: table;
    clear: both;
    content: "";
}

演示 http://jsfiddle.net/mh7waw46/1/

<span> 是一个 display: inline; 元素,默认情况下它只占用内容的区域。 display: block; 元素占据可用宽度的 100%。您可以将 <span> 设置为 display: block; 或使用 <div> 代替,但这样您还需要将 <li> 元素的填充设置为 0,以便内部元素 ( <span>) 将获得 <li> 元素的完整宽度。然后您可以将填充设置为 <span>.