我正在尝试构建一个“mega nav”,但是当我使用自定义滚动条时,我遇到了一些问题。
我的问题是,自定义scrollbar
会为我的nav
添加隐藏隐藏溢出的标记,因此.sub-nav
元素会隐藏。
我能想到的唯一解决方案是添加固定到.sub-nav
元素的位置,然后使用JavaScript
来定位它,这非常混乱且不可靠。
我已经粘贴了两个显示我的意思的小提琴 - 我希望这些有意义,任何建议都会非常感激!
由于
没有插件
http://jsfiddle.net/f4qh27n7/11/
使用插件
http://jsfiddle.net/f4qh27n7/10/
定位元素的功能
function calcNav(){
if( $('#breadcrumb').length > 0 ){
var b = $('#breadcrumb').offset().top;
var w = $(window).scrollTop();
var x = b - w;
$('.sub-nav').css('top', x);
}
}
calcNav();
var scrollTimeout;
$(window).scroll(function() {
clearTimeout( scrollTimeout );
scrollTimeout = setTimeout( calcNav, 50 );
});
答案 0 :(得分:0)
我的建议是将所有子导航文件移出示例父级。
我会将DOM结构更改为:
<div class="mega-nav">
<div class="sub-nav"></div>
<div class="sub-nav"></div>
<div class="sub-nav"></div>
<ul class="parent-cat demo gray-skin">
<li><a href="#">Parent Category</a></li>
<li><a href="#">Parent Category</a></li>
<li><a href="#">Parent Category</a></li>
</ul>
</div>
将DOM结构更改为上面的结构后,您可以使用index()来定位悬停时的相关内容:
var tid;
$('.sub-nav').hide();
$('.products-nav').delegate(".parent-cat .viewport .overview > li", "mouseenter", function () {
$('.sub-nav').hide();
clearTimeout(tid);
$($(".sub-nav")[$(this).index()]).show();
});
$('.products-nav').delegate(".parent-cat .viewport .overview > li", "mouseleave", function () {
tid = setTimeout(function () {
$('.sub-nav').hide();
}, 1000);
});
$(".demo").customScrollbar();
工作fiddle
答案 1 :(得分:0)
与@Lajon解决方案非常相似。
只需要一点点重组: http://jsfiddle.net/8zxq5jas/4/
你在哪里寻找什么?
$(".js-parent-category")
.on("mouseenter", function() {
var target = $(this).attr("data-sub-nav-target");
var element = $("." + target);
element.addClass("active");
})
.on("mouseleave", function() {
var target = $(this).attr("data-sub-nav-target");
var element = $("." + target);
element.removeClass("active");
});
$(".demo").customScrollbar();
<ul class="products-nav btcf">
<li><a href="#">Products</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
<!-- Products Mega Nav -->
<div class="mega-nav btcf">
<ul class="parent-cat demo gray-skin scrollable">
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-1">Parent Category 1</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-2">Parent Category 2</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-3">Parent Category 3</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-4">Parent Category 4</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-5">Parent Category 5</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-6">Parent Category 6</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-7">Parent Category 7</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-8">Parent Category 8</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-9">Parent Category 9</a></li>
<li><a href="#" class="js-parent-category" data-sub-nav-target="js-sub-nav-10">Parent Category 10</a></li>
</ul>
<div class="js-sub-nav-1 sub-nav">
<h3>Sub Category 1</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-2 sub-nav">
<h3>Sub Category 2</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-3 sub-nav">
<h3>Sub Category 3</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-4 sub-nav">
<h3>Sub Category 4</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-5 sub-nav">
<h3>Sub Category 5</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-6 sub-nav">
<h3>Sub Category 6</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-7 sub-nav">
<h3>Sub Category 7</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-8 sub-nav">
<h3>Sub Category 8</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-9 sub-nav">
<h3>Sub Category 9</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
<div class="js-sub-nav-10 sub-nav">
<h3>Sub Category 10</h3>
<ul>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
<li><a href="#">Child link</a></li>
</ul>
</div>
</div>