css - 给出溢出值隐藏了嵌套的sidenav
问题描述
我在下面的 stackblitz 中创建了sidenav
我已经给出了overflow-x: visible
,overflow-y: auto/hidden
所以如果有更多菜单项,我应该会看到垂直滚动。但这打破了我的嵌套侧边菜单选项,它在 div 下而不是在上面看到。
* Top Level Menu */
.nestedsidemenu ul {
z-index: 100;
margin: 0;
padding: 0;
position: relative;
list-style: none;
overflow-x: visible;
overflow-y: scroll;
}
因此,看不到我的嵌套 sidenav 选项。
注意:到目前为止,stackblitz 中的侧边菜单涵盖了完整视图。请滚动或调整输出窗口大小以查看正确的分辨率
可以给出任何修复,以便我可以看到嵌套的 sidenav 选项?
解决方案
如果我正确理解您要实现的目标,请在此处快速修复。
- 添加
overflow: visible
到.nestedsidemenu
overflow-x: auto
从中删除.nestedsidemenu ul
- 更改
.nestedsidemenu ul li
为position: relative
- 添加
top: 0
到.nestedsidemenu ul li:hover > ul
(顶级,不在媒体查询中)
这是在行动:
/* Nested Side Bar Menu
Project URL: http://www.dynamicdrive.com/style/csslibrary/item/nested_side_bar_menu/
*/
.nestedsidemenu {
font: bold 16px 'Bitter', sans-serif;
position: relative;
width: 100px;
overflow: visible;
}
/* Top Level Menu */
.nestedsidemenu ul {
z-index: 100;
margin: 0;
padding: 0;
position: relative;
list-style: none;
overflow-y: visible;
}
/* Top level list items */
.nestedsidemenu ul li {
position: relative;
}
/* Top level menu items link style */
.nestedsidemenu ul li a,
.nestedsidemenu ul li span {
display: block;
position: relative;
/* background of menu items (default state) */
background: #008c9e;
color: white;
padding: 14px 10px;
color: #2d2b2b;
text-decoration: none;
}
.nestedsidemenu ul li a:link,
.nestedsidemenu ul li a:visited {
color: white;
}
/* Top level menu items link style on hover and when active */
.nestedsidemenu ul li:hover > a {
background: #005f6b;
}
/* Sub ULs style */
.nestedsidemenu ul li ul {
position: absolute;
left: -5000px;
top: 0;
opacity: 0;
width: 230px;
visibility: hidden;
box-shadow: 2px 2px 5px gray;
-webkit-transition: opacity 0.3s, visibility 0s 0.3s, left 0s 0.3s;
transition: opacity 0.3s, visibility 0s 0.3s, left 0s 0.3s;
}
/* First Sub Levels UL style on hover */
.nestedsidemenu ul li:hover > ul {
visibility: visible;
left: 100%;
top: 0;
opacity: 1;
-webkit-transition: opacity 0.5s;
transition: opacity 0.5s;
}
/* Sub level Menu list items (alters style from Top level List Items) */
.nestedsidemenu ul li ul li {
display: list-item;
float: none;
}
/* 2nd and beyond Sub Levels vertical offset after 1st level sub menu */
.nestedsidemenu ul li ul li ul {
top: 0;
left: 100%;
}
/* Sub Levels link style on hover and when active */
.nestedsidemenu ul ul li:hover > a {
background: #52616a;
}
/* Sub Levels UL style on hover */
.nestedsidemenu ul ul li:hover > ul {
left: 100%;
}
/* Sub level menu links style */
.nestedsidemenu ul li ul li a {
font: normal 14px 'Bitter', sans-serif;
padding: 10px;
margin: 0;
background: #4ea1d3;
border-right: none;
border-top-width: 0;
}
/* LIs with a sub UL style */
.nestedsidemenu ul li > a {
/* add padding to accomodate arrow inside LIs */
padding-right: 25px;
}
/* LIs with NO sub UL style */
.nestedsidemenu ul li > a:only-child {
/* undo padding for non submenu LIs */
padding-right: 10px;
}
/* LIs with a sub UL pseudo class */
.nestedsidemenu ul li > a:after {
/* add arrow inside LIs */
content: '';
position: absolute;
height: 0;
width: 0;
border: 5px solid transparent;
border-left-color: #ffffff;
top: 40%;
right: 8px;
}
/* LIs with NO sub UL pseudo class */
.nestedsidemenu ul li > a:only-child:after {
/* undo arrow for non submenu LIs */
display: none;
}
/* ####### responsive layout CSS ####### */
@media (max-width: 923px) {
/* FIRST breaking point
Last top menu items' sub ULs should drop to the left (instead of right)
Change 1 to a different number to exclude/include more top menu items based on menu and max-width setting above
*/
.nestedsidemenu ul li:nth-last-of-type(-n + 1) ul li:hover > ul {
left: -100%;
}
}
@media (max-width: 500px) {
/* SECOND breaking point
For mobile and screen browser windows
Get Sub ULs to expand entire width of document and drop down
Changes menu reveal type from "visibility" to "display" to overcome bug. See comments below
*/
.nestedsidemenu {
width: 100%;
}
.nestedsidemenu ul li > a:after {
/* add arrow inside LIs */
content: '';
position: absolute;
height: 0;
width: 0;
border: 5px solid transparent;
border-left-color: transparent;
border-top-color: #fff;
top: 40%;
right: 8px;
}
.nestedsidemenu ul li {
position: static;
}
.nestedsidemenu ul li ul {
width: 100%;
border-top: 2px solid rgba(0, 0, 0, 0.6);
/* change menu reveal type from "visibility" to "display". Former seems to cause browser to jump to top of page sometimes when menu header is tapped on */
display: none;
}
.nestedsidemenu ul li:hover > ul {
display: block;
left: 0 !important;
top: auto;
box-shadow: 0 0 12px gray;
}
}
<div class="nestedsidemenu">
<ul>
<li><a href="#">Item 1</a></li>
<li><a href="javascript:vold(0)">Folder 1</a>
<ul>
<li><a href="#">Sub Item 1.1</a></li>
<li><a href="#">Sub Item 1.2</a></li>
<li><a href="#">Sub Item 1.3</a></li>
<li><a href="#">Sub Item 1.4</a></li>
<li><a href="#">Sub Item 1.2</a></li>
<li><a href="#">Sub Item 1.3</a></li>
<li><a href="#">Sub Item 1.4</a></li>
</ul>
</li>
<li><a href="javascript:vold(0)">Folder 2</a>
<ul>
<li><a href="#">Sub Item 2.1</a></li>
<li><a href="#">Sub Item 2.2</a></li>
<li><a href="javascript:vold(0)">Folder 2.3</a>
<ul>
<li><a href="#">Sub Item 2.3.1</a></li>
<li><a href="#">Sub Item 2.3.2</a></li>
<li><a href="#">Sub Item 2.3.3</a></li>
<li><a href="#">Sub Item 2.3.4</a></li>
</ul>
</li>
<li><a href="#">Sub Item 2.4</a></li>
<li><a href="#">Sub Item 2.5</a></li>
<li><a href="#">Sub Item 2.6</a></li>
<li><a href="#">Sub Item 2.7</a></li>
</ul>
</li>
<li><a href="#">Item 3</a></li>
<li><a href="javascript:vold(0)">Folder 3</a>
<ul>
<li><a href="#">Sub Item 3.1</a></li>
<li><a href="javascript:vold(0)">Folder 3.2</a>
<ul>
<li><a href="#">Sub Item 3.2.1</a></li>
<li><a href="#">Sub Item 3.2.2</a></li>
<li><a href="javascript:vold(0)">Folder 3.2.3</a>
<ul>
<li><a href="#">Sub Item 3.2.3.1</a></li>
<li><a href="#">Sub Item 3.2.3.2</a></li>
<li><a href="#">Sub Item 3.2.3.3</a></li>
<li><a href="#">Sub Item 3.2.3.4</a></li>
<li><a href="#">Sub Item 3.2.3.5</a></li>
</ul>
</li>
<li><a href="#">Sub Item 3.2.4</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://twitter.com/ddrivegeorge">Twitter</a></li>
</ul>
<br style="clear: left" />
</div>
如果这不能回答您的问题,请澄清,我很乐意相应地调整我的解决方案。
推荐阅读
- tfs - 如何将过去迭代的排序顺序更改为 TFS 积压/董事会中的降序?
- xml - xslt 使用命名空间重命名标签
- ios - Cocoa Touch 框架和 Cocoa Touch 静态库的区别?
- c# - 绘制图像
- excel - 如何评估excel中的值,需要公式帮助
- java - RestTemplate:exchange() vs postForEntity() vs execute()
- python - 使用输入按钮处理网站上的分页
- azure - Azure 应用服务现在是否支持 GDI+ (System.Drawing)?
- c# - 无法加载反序列化所需的类型 System.Collections.Generic.List`1
- c# - 使用 EF 代码优先迁移仅为初始数据插入身份