html - 管理侧边栏中的子链接

标签 html css sidebar

我有一个左侧边栏,其中包括链接和子链接。看起来如下 -
enter image description here

当我将鼠标悬停在侧边栏内显示的链接子链接上时(在图像中,我将鼠标悬停在帖子链接上,其子链接显示在侧边栏内)。
现在我的问题是或者我想要的是子链接应该显示在侧边栏之外(在侧边栏的右侧)。
这是我到目前为止尝试过的

.sidenav {
    height: 90%;
    width: 50%;
    position: fixed;
    z-index: 1;
    top: 0;
    left: 0;
    /*background-color: #111;*/
    background:#23282D;
    overflow-x: hidden;
    transition: 0.5s;
    padding-top: 60px;
    margin-top:62px;
}

.sidenav a {
    padding: 8px 8px 8px 32px;
    text-decoration: none;
    font-size: 18px;
    color: #818181;
    display: block;
    transition: 0.3s
}

.sidenav a:hover, .offcanvas a:focus{
    color: #f1f1f1;
}

.sidenav .closebtn {
    position: absolute;
    top: 0;
    right: 25px;
    font-size: 36px;
    margin-left: 50px;
}

#main {
    transition: margin-left .5s;
    padding: 16px;
    margin-top:50px;
}

@media screen and (max-height: 450px) {
  .sidenav {padding-top: 15px;}
  .sidenav a {font-size: 18px;}
}  
<div id="mySidenav" class="sidenav">
  <a href="javascript:void(0)" class="closebtn" id='sidebar_close'>&times;</a>
  <ul style='list-style:none;'>
  <li class='myclass'><a href="#">Dashboard</a></li>
 <li class='post_list'> <a href="#">Posts</a>
    <ul style='list-style:none;' class='sub_links'>
        <li><a href='#'>All</a></li>
        <li><a href='#'>Add</a></li>
        <li><a href='#'>Category</a></li>
    </ul>
 </li>
  <li class='post_list'>
  <a href="#">Pages</a>
<ul style='list-style:none;' class='sub_links'>
        <li><a href='#'>All</a></li>
        <li><a href='#'>Add</a></li>
    </ul>
  </li>
  <li><a href="#" class='media_upload'>Media</a></li>
<li class='post_list'> <a href="#">User</a>
    <ul style='list-style:none;' class='sub_links'>
        <li><a href='#'>All</a></li>
        <li><a href='#'>Add</a></li>
        <li><a href='#'>Profile</a></li>
    </ul>
 </li>
  <li><a href="#">Setting</a></li>
  <li><a href="#">Logout</a></li>
  </ul>
</div> 

请帮我管理子链接。
谢谢。

最佳答案

你需要使用位置来实现这个 将 li (.post_list) 设置为 position:relative; 并将子菜单 (ul) 设置为 position:absolute; ,并且您必须从 sidenav

中删除 overflowx:hidden;

这是您应该添加的代码:

.post_list{

      position: relative;
}

.post_list ul{

    list-style: none;
    position: absolute;
    left: 100%;
    background: #23282D;
    top: 0;
    display: none;
}

.post_list:hover ul{

  display: block;
}

jsfiddle

你的代码会变成这样:

.sidenav {
    height: 90%;
    width: 50%;
    position: fixed;
    z-index: 1;
    top: 0;
    left: 0;
    /*background-color: #111;*/
    background:#23282D;
    /*overflow-x: hidden;*/
    transition: 0.5s;
    padding-top: 60px;
    margin-top:62px;
}

.sidenav a {
    padding: 8px 8px 8px 32px;
    text-decoration: none;
    font-size: 18px;
    color: #818181;
    display: block;
    transition: 0.3s
}

.sidenav a:hover, .offcanvas a:focus{
    color: #f1f1f1;
}

.sidenav .closebtn {
    position: absolute;
    top: 0;
    right: 25px;
    font-size: 36px;
    margin-left: 50px;
}

#main {
    transition: margin-left .5s;
    padding: 16px;
    margin-top:50px;
}

.post_list{
  
      position: relative;
}

.post_list ul{
  
    list-style: none;
    position: absolute;
    left: 100%;
    background: #23282D;
    top: 0;
    display: none;
}

.post_list:hover ul{
  
  display: block;
}



@media screen and (max-height: 450px) {
  .sidenav {padding-top: 15px;}
  .sidenav a {font-size: 18px;}
}  
<div id="mySidenav" class="sidenav">
  <a href="javascript:void(0)" class="closebtn" id='sidebar_close'>&times;</a>
  <ul style='list-style:none;'>
  <li class='myclass'><a href="#">Dashboard</a></li>
 <li class='post_list'> <a href="#">Posts</a>
    <ul style='list-style:none;' class='sub_links'>
        <li><a href='#'>All</a></li>
        <li><a href='#'>Add</a></li>
        <li><a href='#'>Category</a></li>
    </ul>
 </li>
  <li class='post_list'>
  <a href="#">Pages</a>
<ul style='list-style:none;' class='sub_links'>
        <li><a href='#'>All</a></li>
        <li><a href='#'>Add</a></li>
    </ul>
  </li>
  <li><a href="#" class='media_upload'>Media</a></li>
<li class='post_list'> <a href="#">User</a>
    <ul style='list-style:none;' class='sub_links'>
        <li><a href='#'>All</a></li>
        <li><a href='#'>Add</a></li>
        <li><a href='#'>Profile</a></li>
    </ul>
 </li>
  <li><a href="#">Setting</a></li>
  <li><a href="#">Logout</a></li>
  </ul>
</div> 

关于html - 管理侧边栏中的子链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886714/

相关文章:

javascript - onsubmit 未在 HTML 表单上调用

javascript - 如何将div的旋转信息获取到js中的变量中

javascript - 我无法在 meteor 中正确显示字符串数据

html - 显示 : relative error: invalid property value when width and height of parent are set

javascript - React + Redux HOC 加载器

html - 在居中容器内水平对齐 div

javascript - 用不同的方式创建响应式网站

javascript - 让 jReject 工作的问题

css - 如何使 WP 侧边栏具有响应性并在小屏幕上显示在页面底部?

objective-c - SideMenu 黑色 View