Javascript 如何制作多级上下文菜单?
我正在制作一个自定义上下文菜单,这是我的代码。这里我想添加一个多级自定义上下文 [img] 我尝试在这里附加两个li标签 var view=d3.选择(“#contextMenuNode”) html(Javascript 如何制作多级上下文菜单?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在制作一个自定义上下文菜单,这是我的代码。这里我想添加一个多级自定义上下文 [img] 我尝试在这里附加两个li标签 var view=d3.选择(“#contextMenuNode”) html()查看此文件 $(文档).ready(函数(){ //显示上下文菜单: $(文档).上下文菜单(函数(e){ //获取窗口大小: var winWidth=$(document.width(); var winHeight=$(document.height(); //获取指针位置: var
)查看此文件
$(文档).ready(函数(){
//显示上下文菜单:
$(文档).上下文菜单(函数(e){
//获取窗口大小:
var winWidth=$(document.width();
var winHeight=$(document.height();
//获取指针位置:
var posX=e.pageX;
var posY=e.pageY;
//获取上下文菜单大小:
var menuWidth=$(“.contextmenu”).width();
var menuHeight=$(“.contextmenu”).height();
//保证金:
var-secMargin=10;
//防止页面溢出:
如果(posX+menuWidth+secMargin>=winWidth&&
posY+menuHeight+secMargin>=winHeight){
//案例1:右下溢流:
posLeft=posX-menuWidth-secMargin+“px”;
posTop=posY-menuHeight-secMargin+px;
}else if(posX+menuWidth+secMargin>=winWidth){
//案例2:右溢出:
posLeft=posX-menuWidth-secMargin+“px”;
posTop=posY+secMargin+px;
}否则如果(posY+menuHeight+secMargin>=winHeight){
//案例3:底部溢流:
posLeft=posX+secMargin+px;
posTop=posY-menuHeight-secMargin+px;
}否则{
//案例4:默认值:
posLeft=posX+secMargin+px;
posTop=posY+secMargin+px;
};
//显示上下文菜单:
$(“.contextmenu”).css({
“左”:左,
“顶部”:后期
}).show();
//阻止浏览器默认上下文菜单。
返回false;
});
//隐藏上下文菜单:
$(文档)。单击(函数(){
$(“.contextmenu”).hide();
});
});代码>
*{
-webkit框大小:边框框;
-moz框大小:边框框;
框大小:边框框;
}
html,
身体{
保证金:0;
填充:0;
背景:#DCE775;
字体系列:“Merriweather”,衬线;
}
h1{
位置:绝对位置;
最高:50%;
左:50%;
-webkit转换:翻译(-50%,-50%);
-ms转换:翻译(-50%,-50%);
-o变换:平移(-50%,-50%);
转换:翻译(-50%,-50%);
填充:1em;
字号:2em;
字母间距:.3em;
颜色:#FFFFFF;
文本对齐:居中;
边框顶部:2个实心#E6EE9C;
边框底部:2个实心#E6EE9C;
}
.上下文菜单{
显示:无;
位置:绝对位置;
宽度:200px;
保证金:0;
填充:0;
背景:#FFFFFF;
边界半径:5px;
列表样式:无;
盒影:0 15px 35px rgba(50,50,90,0.1),0 5px 15px rgba(0,0,0,0.07);
z指数:999999;
}
李先生{
左边框:3倍实心透明;
过渡期:2秒;
}
.上下文菜单李a{
显示:块;
填充:10px;
颜色:#B0BEC5;
文字装饰:无;
过渡期:2秒;
}
.contextmenu li:悬停{
背景#CE93D8;
左边框:3px实心#9C27B0;
}
.contextmenu li:将鼠标悬停在a上{
颜色:#FFFFFF;
}
.子菜单{
显示:无;
}
鼠标悬停。子菜单{
显示:块;
位置:绝对位置;
顶部:0px;
宽度:200px;
右:-200px;
背景:#fff;
填充:0;
}
.子菜单li{
列表样式:无;
颜色:#B0BEC5;
}
.子菜单LIA{
颜色:#B0BEC5!重要;
}
右击!
请在您的问题中提供您的代码,而不仅仅是您想要实现的参考。每当我右键单击svgGlad时,我只是附加两个li标记,这很有帮助。唯一的问题是为什么子菜单之间有间隙,它显示间隙,因为我忘了添加填充:0;给第二个ul。我已经更新了代码片段。