Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML自定义菜单控件问题_Javascript_Html_Css_Menu_Html Lists - Fatal编程技术网

Javascript HTML自定义菜单控件问题

Javascript HTML自定义菜单控件问题,javascript,html,css,menu,html-lists,Javascript,Html,Css,Menu,Html Lists,我有一份菜单,如这把小提琴所示: (函数($){ $.fn.menumaker=函数(选项){ var cssmenu=$(此),设置=$.extend({ 标题:“菜单”, 格式:“下拉列表”, 粘性:假 },选项); 返回此。每个(函数(){ cssmenu.prepend(“”+settings.title+“”); $(此)。查找(#菜单按钮”)。在('单击',函数(){ $(this.toggleClass('menu-opened'); var mainmenu=$(this.ne

我有一份菜单,如这把小提琴所示:

(函数($){
$.fn.menumaker=函数(选项){
var cssmenu=$(此),设置=$.extend({
标题:“菜单”,
格式:“下拉列表”,
粘性:假
},选项);
返回此。每个(函数(){
cssmenu.prepend(“”+settings.title+“”);
$(此)。查找(#菜单按钮”)。在('单击',函数(){
$(this.toggleClass('menu-opened');
var mainmenu=$(this.next('ul');
if(mainmenu.hasClass('open')){
main menu.hide().removeClass('open');
}
否则{
main menu.show().addClass('open');
如果(settings.format==“下拉列表”){
main menu.find('ul').show();
}
}
});
cssmenu.find('li-ul').parent().addClass('has-sub');
multiTg=函数(){
cssmenu.find(“.has sub”).prepend(“”);
cssmenu.find(“.子菜单按钮”)。在('单击',函数()上{
$(this.toggleClass('submenu-opened');
if($(this).sibbins('ul').hasClass('open')){
$(this).sides('ul').removeClass('open').hide();
}
否则{
$(this).this('ul').addClass('open').show();
}
});
};
如果(settings.format==='multitogle')multiTg();
else cssmenu.addClass('dropdown');
如果(settings.sticky==true)cssmenu.css('position','fixed');
resizeFix=函数(){
如果($(窗口).width()>768){
cssmenu.find('ul').show();
}

如果($(window).width()首先,做一件事,使用java脚本和您的子div获取文档的宽度,如果大于最小高度,则在子菜单悬停时设置生成div的最小宽度,而不是设置子菜单的动画(子div)无论你想去哪里,或者你也可以使用java脚本css属性提供样式。

我猜这只能用JavaScript来完成

使用以下
mouseenter
事件更新您的ready函数。当有人用
has sub
类将鼠标移动到
li
上时,该函数将触发

(function ($) {
$(document).ready(function () {

    $("#cssmenu").menumaker({
        title: "Menu",
        format: "multitoggle"
    });

    $("li.has-sub").on("mouseenter", function(){

        var element = this).find("ul");
        //remove the class beforehand so it always defaults to the right.
        $(element.removeClass("showleft");

        //if the rendered menu and it's page offset are wider then the body 
        if (element.offsetWidth + element.offset().left > document.body.offsetWidth)
        {
            element.addClass("showleft");
        }

    });

});
将此添加到css中:

.showleft {
    left : -230px !important;    
}
它起作用了,看这里:


我不相信你的小提琴工作正常。你也有菜单重叠的问题。我已经更新了小提琴。请检查我的编辑
.showleft {
    left : -230px !important;    
}