溢出容器的内容

时间:2017-04-13 19:11:53

标签: html css flexbox

我希望dropdown flex像这样

enter image description here

这是我在互联网上找到的,它使用简单的下拉菜单。

我想要使用flexbox及其属性的下拉菜单。问题是列中的元素数量是动态的,但是flexbox容器不会根据它改变其高度。

这就是我得到的

enter image description here

代码

* {
    font-family: sans-serif;
}
@font-face {
    font-family: Oxygen;
    src: url('https://fonts.googleapis.com/css?family=Oxygen');
}
body{
    margin: 0;
    background-color: #cbcbcb;
}
nav {
    position: relative;
    background-color: #f8f8f8;
    display: flex;
    justify-content: space-between;
    border-bottom-width: 1px;
    border-bottom-color: black;
}
nav ul {
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin: 0;
}
nav a {
    text-decoration: none;
    color: #777;
    padding: 15px;
    font-family: sans-serif;
    font-size: 18px;
}
nav a:hover {
    color: #000;
}
.logo a {
    font-size: 25px;
}
nav ul {
    list-style: none;
}
li > ul.drop-menu {
    display: none;
}
li:hover > ul.drop-menu {
    position: absolute;
    top: 100%;
    background-color: white;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: space-around;
    padding-left: 0;
    padding-top: 10px;
    padding-bottom: 10px;
}
.drop-col {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
.drop-col > ul {
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding-left: 0;
}
.drop-header {
    font-size: 18px;
    font-family: sans-serif;
    color: #ff3546;
    padding-top: 5px;
    padding-bottom: 5px;
    line-height: 30px;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Navbar</title>
    <script src="live.js"></script>
    <link rel="stylesheet" href="nav.css">
</head>
<body>
    <nav>
        <ul class="left">
            <li class="logo"><a href="#">SoulOTrip</a></li>
            <li >
                <a href="#">Adventure Trips</a>
                <ul class="drop-menu">
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Airforce</li>
                            <li>Flying fox</li>
                            <li>Bungee Jumping</li>
                            <li>Paragliding</li>
                        </ul>
                    </div>
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Army</li>
                            <li>Skiing</li>
                            <li>Mountaineering</li>
                            <li>Trekking</li>
                            <li>Rock Climbing</li>
                        </ul>
                    </div>
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Navy</li>
                            <li>River Rafting</li>
                            <li>Parasailing</li>
                            <li>Scuba Diving</li>
                            <li>Swimming</li>
                            <li>Kayaking</li>
                            <li>Surfing</li>
                        </ul>
                    </div>
                </ul>
            </li>
            <li><a href="#">Top Destinations</a></li>
            <li><a href="#">Explore</a></li>
        </ul>
        <ul class="right">
            <li class=""><a href="#">Username</a></li>
            <li class=""><a href="/login">Login</a></li>
            <li class=""><a href="/register">Register</a></li>
        </ul>
</nav>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

问题是,您意外地定位了下拉菜单,因此也将其限制为50px。您可以通过从

更改选择器来解决此问题
nav ul { 
   /* this affects all ul elements inside the nav, the first level
      .left as well as the .drop-menu */ 
}

以下内容:

nav > ul { /* <- this affects only the direct descendant (ul.left) */ }

或者,您可以将height声明更改为min-height

* {
    font-family: sans-serif;
}
@font-face {
    font-family: Oxygen;
    src: url('https://fonts.googleapis.com/css?family=Oxygen');
}
body{
    margin: 0;
    background-color: #cbcbcb;
}
nav {
    position: relative;
    background-color: #f8f8f8;
    display: flex;
    justify-content: space-between;
    border-bottom-width: 1px;
    border-bottom-color: black;
}
nav > ul {
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin: 0;
}
nav a {
    text-decoration: none;
    color: #777;
    padding: 15px;
    font-family: sans-serif;
    font-size: 18px;
}
nav a:hover {
    color: #000;
}
.logo a {
    font-size: 25px;
}
nav ul {
    list-style: none;
}
li > ul.drop-menu {
    display: none;
}
li:hover > ul.drop-menu {
    position: absolute;
    top: 100%;
    background-color: white;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: space-around;
    padding-left: 0;
    padding-top: 10px;
    padding-bottom: 10px;
}
.drop-col {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
.drop-col > ul {
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding-left: 0;
}
.drop-header {
    font-size: 18px;
    font-family: sans-serif;
    color: #ff3546;
    padding-top: 5px;
    padding-bottom: 5px;
    line-height: 30px;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Navbar</title>
    <script src="live.js"></script>
    <link rel="stylesheet" href="nav.css">
</head>
<body>
    <nav>
        <ul class="left">
            <li class="logo"><a href="#">SoulOTrip</a></li>
            <li >
                <a href="#">Adventure Trips</a>
                <ul class="drop-menu">
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Airforce</li>
                            <li>Flying fox</li>
                            <li>Bungee Jumping</li>
                            <li>Paragliding</li>
                        </ul>
                    </div>
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Army</li>
                            <li>Skiing</li>
                            <li>Mountaineering</li>
                            <li>Trekking</li>
                            <li>Rock Climbing</li>
                        </ul>
                    </div>
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Navy</li>
                            <li>River Rafting</li>
                            <li>Parasailing</li>
                            <li>Scuba Diving</li>
                            <li>Swimming</li>
                            <li>Kayaking</li>
                            <li>Surfing</li>
                        </ul>
                    </div>
                </ul>
            </li>
            <li><a href="#">Top Destinations</a></li>
            <li><a href="#">Explore</a></li>
        </ul>
        <ul class="right">
            <li class=""><a href="#">Username</a></li>
            <li class=""><a href="/login">Login</a></li>
            <li class=""><a href="/register">Register</a></li>
        </ul>
</nav>
</body>
</html>

答案 1 :(得分:0)

如果我了解最终目标,您希望将nav ul { height: 50px; }更改为min-height: 50px

&#13;
&#13;
* {
    font-family: sans-serif;
}
@font-face {
    font-family: Oxygen;
    src: url('https://fonts.googleapis.com/css?family=Oxygen');
}
body{
    margin: 0;
    background-color: #cbcbcb;
}
nav {
    position: relative;
    background-color: #f8f8f8;
    display: flex;
    justify-content: space-between;
    border-bottom-width: 1px;
    border-bottom-color: black;
}
nav ul {
    min-height: 50px;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    margin: 0;
}
nav a {
    text-decoration: none;
    color: #777;
    padding: 15px;
    font-family: sans-serif;
    font-size: 18px;
}
nav a:hover {
    color: #000;
}
.logo a {
    font-size: 25px;
}
nav ul {
    list-style: none;
}
li > ul.drop-menu {
    display: none;
}
li:hover > ul.drop-menu {
    position: absolute;
    top: 100%;
    background-color: white;
    left: 0;
    width: 100%;
    display: flex;
    justify-content: space-around;
    padding-left: 0;
    padding-top: 10px;
    padding-bottom: 10px;
}
.drop-col {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
.drop-col > ul {
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding-left: 0;
}
.drop-header {
    font-size: 18px;
    font-family: sans-serif;
    color: #ff3546;
    padding-top: 5px;
    padding-bottom: 5px;
    line-height: 30px;
}
&#13;
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Navbar</title>
    <script src="live.js"></script>
    <link rel="stylesheet" href="nav.css">
</head>
<body>
    <nav>
        <ul class="left">
            <li class="logo"><a href="#">SoulOTrip</a></li>
            <li >
                <a href="#">Adventure Trips</a>
                <ul class="drop-menu">
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Airforce</li>
                            <li>Flying fox</li>
                            <li>Bungee Jumping</li>
                            <li>Paragliding</li>
                        </ul>
                    </div>
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Army</li>
                            <li>Skiing</li>
                            <li>Mountaineering</li>
                            <li>Trekking</li>
                            <li>Rock Climbing</li>
                        </ul>
                    </div>
                    <div class="drop-col">
                        <ul>
                            <li class="drop-header">Navy</li>
                            <li>River Rafting</li>
                            <li>Parasailing</li>
                            <li>Scuba Diving</li>
                            <li>Swimming</li>
                            <li>Kayaking</li>
                            <li>Surfing</li>
                        </ul>
                    </div>
                </ul>
            </li>
            <li><a href="#">Top Destinations</a></li>
            <li><a href="#">Explore</a></li>
        </ul>
        <ul class="right">
            <li class=""><a href="#">Username</a></li>
            <li class=""><a href="/login">Login</a></li>
            <li class=""><a href="/register">Register</a></li>
        </ul>
</nav>
</body>
</html>
&#13;
&#13;
&#13;