【问题标题】:How to format a multi-level drop down menu如何格式化多级下拉菜单
【发布时间】:2015-09-23 23:00:47
【问题描述】:

我想在我的网页上使用以下下拉菜单:

HTML:

<div id="mn-wrapper">
    <div class="mn-sidebar">
        <div class="mn-toggle"><i class="fa fa-bars"></i></div>
        <div class="mn-navblock">
            <ul class="mn-vnavigation">
                <li class="dropdown-submenu active">
                    <a tabindex="-1" href="#">Client Advice</a>
            <ul class="dropdown-menu">
                <li><a tabindex="-1" href="#">Pre-advice</a></li>
              <li><a href="#">Strategy & Technical</a></li>
              <li><a href="#">Research</a></li>
              <li class="dropdown-submenu active">
                <a href="#">APL & Products</a>
                <ul class="dropdown-menu parent">
                    <li style=" border-bottom: 1px solid #ccc;">
                                        <a href="#">Approved Product List
                                            <span aria-hidden="true" class="glyphicon glyphicon-plus pull-right"></span>
                                            <span aria-hidden="true" class="glyphicon glyphicon-minus pull-right" style="display:none;"></span>
                                        </a>
                                    <ul class="child">
                                        <li style="padding:10px 15px; color:white;">Platforms</li>
                    <li style="padding: 10px 15px; color:white;">Managed Funds</li>
                    <li style="padding: 10px 15px; color:white;">Wealth Protection</li>
                    <li style="padding: 10px 15px; color:white;">Listed Securities</li>
                    <li style="padding: 10px 15px; color:white;">Wealth Protection</li>
                    <li style="padding: 10px 15px; color:white;">Listed Securities</li>
                    <li style="padding: 10px 15px; color:white;">Listed Securities</li>
                  </ul>
                                </li>
                <li style=" border-bottom: 1px solid #ccc;"><a href="#">Model Portfolios</a></li>
                <li style=" border-bottom: 1px solid #ccc;"><a href="#">Non-approved Products</a></li>
             </ul>
           </li>
           <li><a href="#">Implementation</a></li>
           <li><a href="#">Review</a></li>
           <li><a href="#">Execution Only</a></li>
         </ul>
       </li>
       <li><a href="#">Personal Development</a></li>
       <li><a href="#">Practice</a></li>
       <li><a href="#">News</a></li>
     </ul>
   </div>
   <div class="bottom-mn">
         <ul class="mn-vnavigation">
                <li>
                    <a href="#">My Favourite</a>
             </li>
             <li>
                    <a href="#">Most Popular</a>
             </li>
         </ul>
   </div>
</div>
<div class="container" id="mn-cont">
    <div class="cnt-mcont">
        <h1>Title Page</h1>
    </div>
</div>
</div>

CSS:

html{
    height:100%; 
}
body{
    height:50%;
    position: relative;
}
.dropdown-submenu {
    border-bottom: 1px solid #ccc;
}
#mn-wrapper {
  display: table;
  width: 100%;
  position: absolute;
    height: 100%;
}
.mn-sidebar {
  display: table-cell;
  position: relative;
  vertical-align: top;
  padding-bottom: 49px;
    background: #272930;
    width: 216px;
    z-index: 2;
}
#mn-cont {
  display: table-cell;
    vertical-align: top;     
    position: relative;
    padding: 0;
}
.container {
    margin-right: auto;
}
.cnt-mcont {
  background-color: #F6F6F6;
  color: inherit;
  font-size: 13px;
  font-weight: 200;
  line-height: 21px;
  padding: 15px 30px 30px 30px;
  margin-top: 0;
    height: 101vh;
}
.mn-sidebar .mn-toggle {
  display: none;
  padding: 10px 0;
  text-align: center;
    cursor: pointer;
}
.mn-vnavigation {
  margin: 0 0 0 0;
  padding: 0;
  border-top: 1px solid #1a1c20;
    border-bottom: 1px solid #2f323a;
}
.mn-vnavigation li a {
  border-top: 1px solid #32353e;
  border-bottom: 1px solid #1a1c20;
  display: block;
  padding: 14px 18px 13px 15px;
  color: #fff;
  text-decoration: none;
  font-size: 12px;
  font-weight: 300;
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.3);
    white-space: nowrap;
}
.dropdown-submenu >
.dropdown-menu {
    top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
  height: 101vh;
  width: 216px;
  background: #272930;
}
.dropdown-submenu:hover > 
.dropdown-menu {
    display: block;
}
.dropdown-submenu > a:after {
    display: block;
    content: " ";
    float: right;
    width: 0;
    height: 0;
    border-color: transparent;
    border-style: solid;
    border-width: 5px 0 5px 5px;
    border-left-color: #ccc;
    margin-top: 5px;
    margin-right: -10px;
}
.dropdown-submenu:hover > a:after {
    border-left-color: #fff;
}
.dropdown-submenu.pull-left {
    float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
    left: -100%;
    margin-left: 10px;
    -webkit-border-radius: 6px 0 6px 6px;
    -moz-border-radius: 6px 0 6px 6px;
    border-radius: 6px 0 6px 6px;
}
ul {
    list-style: none;
}
ul.dropdown-menu.parent {
  margin-top: -1px;
}
.bottom-mn {
    bottom:0px;         
    position:absolute;
    width:100%;
}

JS:

$('.child').hide(); //Hide children by default
$('.parent').children().click(function () {
    event.preventDefault();
    $(this).children('.child').slideToggle('slow');
    $(this).find('span').toggle();
});

http://codepen.io/MaGiO/pen/YXXzeJ

但是,当我将鼠标悬停在任何列表项上并打开另一个子列表时,我不希望黑色部分延伸到屏幕末尾,我希望当我将鼠标悬停在一个列表项上时,一个新的列表只延伸到最后一个列表项应该出现。我对此有何改变?

另外,当我尝试在 CSS 的 .mn-sidebar 中使用 margin-left 时,下拉菜单会向右移动,但在第一个列表项之前(在下拉菜单之外)会出现一个项目符号,这是为什么呢发生?我希望下拉菜单显示在右侧。

【问题讨论】:

  • 如果以下答案对您有帮助,请接受它

标签: javascript html css


【解决方案1】:

注释.dropdown-submenu > .dropdown-menu {css下的高度部分

.dropdown-submenu >
.dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
/* height: 101vh;*/Comment this out
width: 216px;
background: #272930;
}

请解释一下I want the dropdown menu to appear a bit on the right.是什么意思

See This

好的,试试下面的代码

.mn-vnavigation li a {
margin-left:15px; Add this style
}

根据您的要求给margin-left

See This

【讨论】:

  • 嗨,我希望下拉菜单显示在右侧。我的意思是现在下拉菜单出现在屏幕的左侧,但我希望它首先在左侧有一个纯边距,即整个下拉菜单向右移动几个像素.您提供的内容对此不起作用。
  • 添加这个ul.child { margin-left: 20px; } See This
  • 另外,当我删除高度部分时,我无法将鼠标悬停到下一个子列表(第三个带有加号的子列表)。
  • 我认为这是因为悬停时出现的子菜单从顶部开始。是否可以获得出现在箭头之后、在该列表项前面的子菜单?
  • 或者让箭头后的子菜单出现在点击而不是悬停?
猜你喜欢
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多