我正在尝试构建一个可拖动/可滑动的菜单,这样当您按住当前菜单项并将其拖动到下一个菜单项或之后的菜单项时,它会触发点击链接项目并加载该页面。我正在使用WordPress,但我在下面发布的代码是它输出的内容。
我使用dragDealer.js构建了一个基本版本,当你单击并沿着每个菜单项拖动鼠标时,它会起作用,但是我无法弄清楚如何在链接上触发click事件。
我有一个基本的JSFiddle与我迄今为止设法做的事情一致,但我正在寻找一些帮助来解决如何触发相应菜单项的点击。
https://jsfiddle.net/84xkcdpL/4/
在我当前模拟的版本中,活动菜单项在每个链接之间捕捉,但如果可能的话,将它正确拖动而不是捕捉会很棒。
HTML
<div id="bottom-menu-container">
<div class="bottom-navigation-container">
<nav id="bottom-site-navigation" role="navigation">
<div class="menu-categories-container">
<ul id="menu-categories" class="menu">
<li id="menu-item-230" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-9 current_page_item menu-item-230">
<a href="/projects/">Home</a></li>
<li id="menu-item-228" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-228">
<a href="/stills/">Stills</a></li>
<li id="menu-item-227" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-227">
<a href="/moving/">Moving</a></li>
<li id="menu-item-229" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-229">
<a href="/news/">News</a></li>
<li id="menu-item-231" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-231">
<a href="/print-sale/">Print Sale</a></li>
</ul>
</div>
<div id="demo-simple-slider" class="dragdealer">
<div class="handle active">
</div>
</div>
</nav>
</div>
CSS
#bottom-menu-container {
bottom: 0;
position: fixed;
height: 81px;
width: 100%;
left: 50%;
-webkit-transform: translate(-50%);
-ms-transform: translate(-50%);
transform: translate(-50%);
z-index: 999;
text-transform: lowercase;
}
.bottom-navigation-container {
position: fixed;
bottom: 87px;
z-index: 999;
}
nav#bottom-site-navigation {
position: fixed;
width: 90%;
left: 50%;
-webkit-transform: translate(-50%);
-ms-transform: translate(-50%);
transform: translate(-50%);
}
.menu-categories-container {
margin: 0 -600rem;
background: rgba(255, 255, 255, 0.7);
border-left: 600rem solid rgba(255, 255, 255, 0.7);
border-right: 600rem solid rgba(255, 255, 255, 0.7);
text-transform: lowercase;
height: 90px;
padding-top: 20px;
}
#menu-categories {
padding-bottom: 20px;
padding-left: 0;
}
ul#menu-categories {
display: -ms-flexbox;
display: -webkit-flex;
display: -webkit-box;
display: flex;
-webkit-flex-direction: row;
-ms-flex-direction: row;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
flex-direction: row;
-webkit-flex-wrap: nowrap;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
-webkit-justify-content: space-between;
-ms-flex-pack: justify;
-webkit-box-pack: justify;
justify-content: space-between;
-webkit-align-content: space-between;
-ms-flex-line-pack: justify;
align-content: space-between;
-webkit-align-items: flex-start;
-ms-flex-align: start;
-webkit-box-align: start;
align-items: flex-start;
}
#menu-categories li {
position: relative;
display: block;
float: left;
cursor: pointer;
width: 60px;
text-align: center;
}
#menu-categories li a:focus {
outline: none;
}
#menu-categories li {
background: url("http://static.wixstatic.com/media/6d3d73_763d8ecc876e47beb006d50fc83e8df5.png_srz_35_35_85_22_0.50_1.20_0.00_png_srz")no-repeat;
height: 80px;
background-position: center 16px;
background-size: 20px 20px;
width: 60px;
text-align: center;
margin-top: 9px;
}
.active {
position: relative;
background: url("https://wiki.guildwars2.com/images/b/b4/Black_Dot.png")no-repeat;
height: 20px;
width: 60px;
background-position: center;
background-size: 20px;
z-index: 999;
text-align: center;
display: block;
margin-top: -45px;
}
的jQuery
if(jQuery(window).width() >= 640){ //415
var dragDealer = new Dragdealer('demo-simple-slider', {
steps: 5,
snap:true,
vertical: false,
callback: function(x, y) {
var dragValue = dragDealer.getValue();
console.log(dragValue);
checkDragValue();
}
});
};
链接到dragDealer.js网站 -
http://skidding.github.io/dragdealer/
另外我应该注意,我不一定需要使用dragDealer.js来执行此操作。这就是我设法解决我试图解决的问题。如果有人有任何更好的建议,我很乐意尝试。