【问题标题】:HTML Dropdown for Table Nav Bar表格导航栏的 HTML 下拉菜单
【发布时间】:2015-03-25 21:25:14
【问题描述】:

如果这是一个重复的问题,我很抱歉,但我似乎无法在任何地方找到答案。任何搜索都会弹出带有

的下拉菜单
<nav></nav>

假设这是我的表格(用作导航栏):

<table class="nav">
<tr>
<td><a href="index.html">Home</a></td>
<td><a href="/Videos">All</a></td>
<td><a href="spec.html">Specification</a></td>
<td><a href="chem.html">Chemistry</a></td>
<td><a href="bio.html">Biology</a></td>
<td><a href="phy.html">Physics</a></td>
<td><a href="feedback.html">Feedback</a></td>
<td><a href="donate.html">Donate</a></td>
</tr>
</table>

CSS:

table.nav {
    border: 2px solid white;
    background-color: black;
}

我将如何做到这一点,以便当我将鼠标悬停在它上面时,它会显示一个带有链接的下拉菜单?我想这样做的原因是因为样式和方便。

【问题讨论】:

  • 有很多很多方法可以做到这一点。你愿意使用 javascript 或 jQuery(甚至 jQuery 插件)来实现吗?
  • 我用js没问题,但是我以前从来没有用过jquery。我的意思是,如果它是一个优雅的 jquery 解决方案,我愿意学习它。
  • 如果你愿意学习 Javascript 和 jQuery,不妨努力不使用表格来设计网站。
  • 这是一个有意识的决定。还有,我懂JS,但我不懂JQuery。

标签: html css nav


【解决方案1】:

我强烈建议您为此使用列表,特别是如果内容是由某种 PHP 代码的 CMS 动态创建的。一个简单的 CSS only 解决方案 是在悬停时显示的列表项中创建列表,我过去在一些简单的 Wordpress 菜单上使用过这个。

对于样式,您可以使用类似这样的东西

body {
    margin: 0px;
    padding: 0px;
}

nav ul {
    margin: 0px;
    padding: 0px;
    float: left;
    list-style-type: none;
}

nav ul li {
    padding: 20px;
    float: left;
}

nav ul li ul {
    display: none;
}

nav ul li ul li {
    width: 100%;
    padding: 0px;
    display: block;
}

nav ul li:hover > ul {
    position: absolute;
    display: block;
}

最后一部分nav ul li:hover 告诉显示nav ul li uldisplay: nonedisplay: block,菜单项应该出现。

您可以使用以下 HTML 标记。当然,您必须做一些造型才能使其更具吸引力。

<nav>
    <!-- Start the listing of main items -->
    <ul>
        <li>Menu item 1</li>
        <li>Menu item 2
            <!-- Sub items include -->
            <ul>
                <li>Menu item 2.1</li>
                <li>Menu item 2.2</li>
            </ul>
        </li>
        <li>Menu item 3</li>
    </ul>
</nav>

我之前测试过这段代码,应该可以解决问题。希望这会对您有所帮助,否则您将不得不重新考虑使用 cr0ss 建议的一些 Javascript。

【讨论】:

    【解决方案2】:

    您不必使用 javascript。此外,我不建议为此使用表格,但这是您的选择。看这个例子:

    .nav {
        border: 2px solid white;
        background-color: black;
    }
    
    .nav td { position: relative; }
    
    .nav table,
    .nav ul { 
        display: none;
        position: absolute;
        list-style: none;
        margin: 0;
        padding: 0;
        width: 300px;
        left: 0;
    }
    
    .nav td:hover table { display: table; /* or display: block; */ }
    .nav td:hover ul { display: block; }
    <table class="nav">
        <tr>
            <td>
                <a href="index.html">Home</a>
            </td>
            <td>
                <a href="/Videos">All</a>
                <ul>
                    <li><a href="#">Item in list</a></li>
                    <li><a href="#">Item in list</a></li>
                </ul>
            </td>
            <td><a href="spec.html">Specification</a></td>
            <td>
                <a href="chem.html">Chemistry</a>
                <table>
                    <tr>
                        <td><a href="#">Item in table</a></td>
                    </tr>
                    <tr>
                        <td><a href="#">Item in table</a></td>
                    </tr>
                </table>
            </td>
            <td><a href="bio.html">Biology</a></td>
            <td><a href="phy.html">Physics</a></td>
            <td><a href="feedback.html">Feedback</a></td>
            <td><a href="donate.html">Donate</a></td>
    </tr>
    </table>

    【讨论】:

    • 所以,例如化学,如果用户将鼠标悬停在化学上,我会编辑什么以使化学下拉菜单变成 4 个选项?
    • @Aurora 查看我最初的答案,我编辑并添加了一个下拉菜单(添加了 &lt;ul&gt;&lt;table&gt;,因为我不确定你想要哪个)。
    • 啊,它有效!谢谢你。另外,@wk_,它说宽度:Xpx;,你如何使背景的宽度与最长选项的长度相同或稍大?我设置了 background-color-black;
    • 我将如何在下拉列表中添加一个边框,比如一个白色的边框? @wk_
    • 要在下拉列表&lt;ul&gt; 中添加一个小的白色边框,只需使用border: 1px #fff solid 设置样式即可。但这是基本的CSS。无意冒犯,但在继续使用您的网站之前,最好先阅读有关基本 html 和 css 的教程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多