2017-09-04 47 views
0

enter image description here下面是我的代码,它的工作完美,但问题是当我滚动左侧面板巨型菜单显示在左侧面板。但我想要的是出现在面板以外是否可滚动或不可滚动。 “尝试在类”.maindiv“中删除(max-height:150px; overflow:auto;)并将鼠标悬停在上面的任何一个列表(ul> li)上,并且您将明白发生了什么事情(我已经连接了一个快照这正是我想要的)在悬停巨型菜单不会出现

.mainediv { 
 
    background: #444; 
 
    width: 200px; 
 
    padding: 0; 
 
    max-height: 150px; 
 
    overflow: auto; 
 
} 
 

 
.mainediv ul li { 
 
    width: 100%; 
 
    position: relative; 
 
} 
 

 
.mainediv ul li a { 
 
    padding: 10px; 
 
    display: inline-block; 
 
    color: #fff; 
 
    width: 100%; 
 
} 
 

 
.megamenu { 
 
    background: #ccc; 
 
    height: 200px; 
 
    width: 100%; 
 
    position: absolute; 
 
    left: 200px; 
 
    top: 0; 
 
    display: none; 
 
} 
 

 
.mainediv ul li a:hover { 
 
    background: #ccc; 
 
} 
 

 
.mainediv ul li:hover .megamenu { 
 
    display: block; 
 
}
<div class="row"> 
 
    <div class="col-md-2 mainediv"> 
 
    <ul> 
 
     <li> 
 
     <a href="#">hover 1</a> 
 
     <div class="megamenu"> 
 
      mega 1 
 
     </div> 
 
     </li> 
 
     <li> 
 
     <a href="#">hover 2</a> 
 
     <div class="megamenu"> 
 
      mega 2 
 
     </div> 
 
     </li> 
 
     <li> 
 
     <a href="#">hover 3</a> 
 
     <div class="megamenu"> 
 
      mega 3 
 
     </div> 
 
     </li> 
 
     <li><a href="#">hover 4</a></li> 
 
     <li><a href="#">hover 5</a></li> 
 
     <li><a href="#">hover 6</a></li> 
 
     <li><a href="#">hover 7</a></li> 
 
     <li><a href="#">hover 8</a></li> 
 
    </ul> 
 
    </div> 
 
</div>

+0

'overflow-x:visible'和'overflow-y:auto'可能不能一起工作,如果这就是你想要的... – kukkuz

+0

no no ...面板滚动是完美的唯一的问题是当您将鼠标悬停在左侧面板的任何链接上时,悬停的项目不会出现在外部,而是显示在左侧面板内。这是完全不正确的 – Samar

+0

让我解释一下,当你将鼠标悬停在列表上时,它可以很好地工作,但问题是我可以在左面板上有超过100个链接,所以我想要的是在高度为150px左面板后会自动滚动,这是已经完美了。唯一的问题是,当我滚动我的左面板悬停项目可见的内部和访问者将需要水平滚动,以观看完全incorect应该发生的大型菜单是当有人悬停在链接超级菜单应该可见的外部不是希望你明白我想要什么 – Samar

回答

0

使用left: 100%;解决您的问题。

.mainediv { 
 
    background: #444; 
 
    width: 200px; 
 
    padding: 0; 
 
    /*max-height: 150px; 
 
    overflow: auto;*/ 
 
} 
 

 
.mainediv ul li { 
 
    width: 100%; 
 
    position: relative; 
 
    list-style: none; 
 
} 
 

 
.mainediv ul li a { 
 
    padding: 10px; 
 
    display: inline-block; 
 
    color: #fff; 
 
    width: 100%; 
 
} 
 

 
.megamenu { 
 
    background: #ccc; 
 
    height: 200px; 
 
    width: 100%; 
 
    position: absolute; 
 
    left: 100%; 
 
    top: 0; 
 
    display: none; 
 
} 
 

 
.mainediv ul li a:hover { 
 
    background: #ccc; 
 
} 
 

 
.mainediv ul li:hover .megamenu { 
 
    display: block; 
 
}
<div class="row"> 
 
    <div class="col-md-2 mainediv"> 
 
    <ul> 
 
     <li> 
 
     <a href="#">hover 1</a> 
 
     <div class="megamenu"> 
 
      mega 1 
 
     </div> 
 
     </li> 
 
     <li> 
 
     <a href="#">hover 2</a> 
 
     <div class="megamenu"> 
 
      mega 2 
 
     </div> 
 
     </li> 
 
     <li> 
 
     <a href="#">hover 3</a> 
 
     <div class="megamenu"> 
 
      mega 3 
 
     </div> 
 
     </li> 
 
     <li><a href="#">hover 4</a></li> 
 
     <li><a href="#">hover 5</a></li> 
 
     <li><a href="#">hover 6</a></li> 
 
     <li><a href="#">hover 7</a></li> 
 
     <li><a href="#">hover 8</a></li> 
 
    </ul> 
 
    </div> 
 
</div>

希望它能帮助你。

+0

啊,认为你不明白我的问题。使它可以在150px的最大高度上滚动是非常重要的。我不能让它100%的高度或宽度。 – Samar

+0

你可以添加你的需求的任何管理单元吗? – kravisingh

+0

我不知道如何在这里添加管理单元,没有任何选项可以在评论框中添加管理单元 – Samar

0

我已经创建了下面的代码。我认为,这是你能做的更好的方式。 我使用jquery通过获得li标签的outerWidthlitopposition().top来得到megamenu的左边。

然后,我每次把这个悬停都添加到li。然后将该背景添加到具有该类的子女a。这里也是更新的jsFiddle

$('.mainediv ul li').hover(function(){ 
 
\t $(this).find('.megamenu').css('top', $(this).position().top); 
 
    $(this).find('.megamenu').css('left', $(this).outerWidth()); 
 
    $(this).toggleClass('bg'); 
 
});
*{ box-sizing: border-box; padding: 0; margin: 0; } 
 

 
.mainediv { 
 
    background: #444; 
 
    width: 200px; 
 
    height: 250px; 
 
    overflow-y: scroll; 
 
    overflow-x: hidden; 
 
} 
 

 
.mainediv ul li { 
 
    display: block; 
 
} 
 

 
.mainediv ul li a { 
 
    color: #fff; 
 
    padding: 10px; 
 
    display: block; 
 
} 
 

 
.megamenu { 
 
    background: #ccc; 
 
    height: 200px; 
 
    width: 50%; 
 
    display: none; 
 
    position: absolute 
 
} 
 
.mainediv ul li:hover > .megamenu{ 
 
    display: block; 
 
} 
 
.mainediv ul li a:hover, .mainediv ul li.bg a{ 
 
    background: #ccc; 
 
}
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script> 
 
<div class="row"> 
 
    <div class="col-md-2 mainediv"> 
 
    <ul> 
 
     <li> 
 
     <a href="#">hover 1</a> 
 
     <div class="megamenu"> 
 
      mega 1 
 
     </div> 
 
     </li> 
 
     <li> 
 
     <a href="#">hover 2</a> 
 
     <div class="megamenu"> 
 
      mega 2 
 
     </div> 
 
     </li> 
 
     <li> 
 
     <a href="#">hover 3</a> 
 
     <div class="megamenu"> 
 
      mega 3 
 
     </div> 
 
     </li> 
 
     <li><a href="#">hover 4</a></li> 
 
     <li><a href="#">hover 5</a></li> 
 
     <li><a href="#">hover 6</a></li> 
 
     <li><a href="#">hover 7</a></li> 
 
     <li><a href="#">hover 8</a></li> 
 
    </ul> 
 
    </div> 
 
</div>

希望这会帮助你。 :)

+0

抱歉说@bellabelle,但它不正确实际上,当我向下滚动并悬停在任何链接悬停的项目上时,都会占用太多的空白空间。尝试先滚动然后悬停在任何项目上... – Samar

+0

@Samar - 你想输出什么? – bellabelle