当元素溢出:隐藏时,如何使元素溢出:自动?
How can I make an element overflow: auto when its parent is overflow: hidden?
Fiddle here
我正在努力做到这一点,如果菜单的高度大于 100%,我可以在菜单内滚动,但在菜单关闭之前不能在正文中滚动。
当菜单打开时,我应用以下内容:
body.menu-open {
overflow: hidden;
}
以及菜单样式:
.navbar .menu {
position: fixed;
width: 30%;
height: auto;
min-height: 150%; /* height greater than 100% */
overflow: auto;
top: 50px;
left: -30%;
background-color: DeepSkyBlue;
transition: left 0.2s ease-in-out;
}
将 min-height
更改为 100%
并将 max-height
和 100%
添加到菜单中:
.navbar .menu {
position: fixed;
width: 30%;
height: auto;
min-height: 100%;
max-height: 100%;
overflow: auto;
top: 50px;
left: -30%;
background-color: DeepSkyBlue;
transition: left 0.2s ease-in-out;
}
$('.navbar .fa-bars').on('click', function() {
$('body').toggleClass('menu-open');
$('.navbar .menu').toggleClass('in');
});
body {
min-height: 100%;
height: 1000px;
margin: 0;
padding: 0;
}
body.menu-open {
overflow: hidden;
}
.navbar {
height: 50px;
background-color: royalblue;
display: flex;
align-items: center;
position: fixed;
width: 100%;
}
.navbar .fa-bars {
color: #fff;
padding: 15px;
cursor: pointer;
}
.navbar .menu {
position: fixed;
width: 30%;
height: auto;
min-height: 100%;
max-height: 100%;
overflow: auto;
top: 50px;
left: -30%;
background-color: DeepSkyBlue;
transition: left 0.2s ease-in-out;
}
.navbar .menu.in {
left: 0;
}
.navbar .menu a {
color: #fdfdfd;
text-decoration: none;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="navbar">
<div class="menu-icon">
<i class="fa fa-bars fa-2x"></i>
</div>
<div class="menu">
<ul class="nav">
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
</div>
Fiddle here
我正在努力做到这一点,如果菜单的高度大于 100%,我可以在菜单内滚动,但在菜单关闭之前不能在正文中滚动。
当菜单打开时,我应用以下内容:
body.menu-open {
overflow: hidden;
}
以及菜单样式:
.navbar .menu {
position: fixed;
width: 30%;
height: auto;
min-height: 150%; /* height greater than 100% */
overflow: auto;
top: 50px;
left: -30%;
background-color: DeepSkyBlue;
transition: left 0.2s ease-in-out;
}
将 min-height
更改为 100%
并将 max-height
和 100%
添加到菜单中:
.navbar .menu {
position: fixed;
width: 30%;
height: auto;
min-height: 100%;
max-height: 100%;
overflow: auto;
top: 50px;
left: -30%;
background-color: DeepSkyBlue;
transition: left 0.2s ease-in-out;
}
$('.navbar .fa-bars').on('click', function() {
$('body').toggleClass('menu-open');
$('.navbar .menu').toggleClass('in');
});
body {
min-height: 100%;
height: 1000px;
margin: 0;
padding: 0;
}
body.menu-open {
overflow: hidden;
}
.navbar {
height: 50px;
background-color: royalblue;
display: flex;
align-items: center;
position: fixed;
width: 100%;
}
.navbar .fa-bars {
color: #fff;
padding: 15px;
cursor: pointer;
}
.navbar .menu {
position: fixed;
width: 30%;
height: auto;
min-height: 100%;
max-height: 100%;
overflow: auto;
top: 50px;
left: -30%;
background-color: DeepSkyBlue;
transition: left 0.2s ease-in-out;
}
.navbar .menu.in {
left: 0;
}
.navbar .menu a {
color: #fdfdfd;
text-decoration: none;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="navbar">
<div class="menu-icon">
<i class="fa fa-bars fa-2x"></i>
</div>
<div class="menu">
<ul class="nav">
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
</div>