Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 菜单和子菜单之间的CSS空间_Html_Css - Fatal编程技术网

Html 菜单和子菜单之间的CSS空间

Html 菜单和子菜单之间的CSS空间,html,css,Html,Css,这就是我想做的: 如果您注意到菜单和子菜单之间有空格 问题是子菜单不能以这种方式工作,因为当鼠标指针离开菜单时,子菜单将消失 它只有在如下情况下才有效: 如何在菜单和子菜单之间留出空间并使其工作 我的代码: <body> <nav> <ul> <li><a href="#">One</a> <ul> <li><a

这就是我想做的:

如果您注意到菜单和子菜单之间有空格

问题是子菜单不能以这种方式工作,因为当鼠标指针离开菜单时,子菜单将消失

它只有在如下情况下才有效:

如何在菜单和子菜单之间留出空间并使其工作

我的代码:

<body>
<nav>
    <ul>
        <li><a href="#">One</a>
            <ul>
                <li><a href="1.html">1.1</a></li>
                <li><a href="2.html">1.2</a>
            </ul>
        </li>
        <li><a href="#">Two</a>
            <ul>
                <li><a href="3.html">2.1</a></li>
                <li><a href="4.html">2.2</a></li>
                <li><a href="5.html">2.3</a></li>
            </ul>
        </li>
        <li><a href="#">Three</a>
            <ul>
                <li><a href="6.html">3.1</a></li>
                <li><a href="7.html">3.2</a></li>
            </ul>
        </li>
        <li><a href="8.html">Four</a></li>
    </ul>
</nav>
</body>
body {
    background-color: #cac3bc
}
nav {
    float: left;
}
nav ul ul {
    display: none;
}
nav ul li:hover > ul {
    display: block;
}
nav ul {
    background-color: #fff;
    margin-top: 10px;
    padding: 0 20px;  
    list-style: none;
    position: relative;
    display: inline-table;
    margin-right: -80px;
}
nav ul li {
    float: left;
}
nav ul li:hover {
    border-bottom: 5px solid #f5aa65;
    color: #fff;
}
nav ul li a:hover {
    color: #000;
}

nav ul li a {
    display: block; 
    padding: 15px 15px;
    font-family: 'PT Sans', sans-serif;
    color: #000; 
    text-decoration: none;
}
nav ul ul {
    background-color:#fff;
    border-radius: 0px; 
    padding: 0;
    position: absolute;
    top: 100%;
    box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
}
nav ul ul li {
    float: none; 
    position: relative;
}
nav ul ul li a {
    padding: 15px 40px;
    color: #000;
}

HTML:

<body>
<nav>
    <ul>
        <li><a href="#">One</a>
            <ul>
                <li><a href="1.html">1.1</a></li>
                <li><a href="2.html">1.2</a>
            </ul>
        </li>
        <li><a href="#">Two</a>
            <ul>
                <li><a href="3.html">2.1</a></li>
                <li><a href="4.html">2.2</a></li>
                <li><a href="5.html">2.3</a></li>
            </ul>
        </li>
        <li><a href="#">Three</a>
            <ul>
                <li><a href="6.html">3.1</a></li>
                <li><a href="7.html">3.2</a></li>
            </ul>
        </li>
        <li><a href="8.html">Four</a></li>
    </ul>
</nav>
</body>
body {
    background-color: #cac3bc
}
nav {
    float: left;
}
nav ul ul {
    display: none;
}
nav ul li:hover > ul {
    display: block;
}
nav ul {
    background-color: #fff;
    margin-top: 10px;
    padding: 0 20px;  
    list-style: none;
    position: relative;
    display: inline-table;
    margin-right: -80px;
}
nav ul li {
    float: left;
}
nav ul li:hover {
    border-bottom: 5px solid #f5aa65;
    color: #fff;
}
nav ul li a:hover {
    color: #000;
}

nav ul li a {
    display: block; 
    padding: 15px 15px;
    font-family: 'PT Sans', sans-serif;
    color: #000; 
    text-decoration: none;
}
nav ul ul {
    background-color:#fff;
    border-radius: 0px; 
    padding: 0;
    position: absolute;
    top: 100%;
    box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
}
nav ul ul li {
    float: none; 
    position: relative;
}
nav ul ul li a {
    padding: 15px 40px;
    color: #000;
}

您可以使用
:before
扩展“可悬停”区域:


公认的答案非常简单和完美。然而,我想为像我这样不得不使用上述答案变体的其他人添加一个替代方案。在我的情况下,我的子菜单是全宽的,所以我在我的子菜单上做一个绝对位置,从主菜单的正下方开始-我引入:before元素来引入100px的间隔。因此,我的代码是

// Define the 100px gap between menu and submenu.
        &:hover ul.sub-menu:before {
            content: "";
            display: block;
            //Note: This height starts at the top:100% of the position absolute for the ul.sub-menu below, 
            //pushing the sub-menu down by the height defined here.
            height: 100px;
            width: 100%;
            background-color: transparent;
        }
将子菜单置于主菜单下方绝对位置且全宽的代码为

   &:hover ul.sub-menu {
            background-color: transparent;
            display: block;
            position: absolute;
            border-top: 10px solid red;
            top: 100%;
            left: 0;
            width: 100%;
            // Sub-menu appears on top of main menu.
            z-index: 1;
enter code here

这些答案对你有帮助吗?通过投票或正确答案让我们知道。