【发布时间】:2021-04-07 22:25:34
【问题描述】:
我正在尝试将 Bootstrap 4 下拉菜单实现为上下文菜单。
一切正常,但下拉的left 和top css 属性面临问题。
DOM 结构?
<div class="col">
<div class="dropdown-menu dropdown-menu-right shadow-sm" style="width: 15rem;" id="contextMenu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
<div class="h-75">
<svg id="preview" class="shadow" height="100%" viewBox="0 0 1920 1080"
preserveAspectRatio="xMinYMin meet" xmlns="http://www.w3.org/2000/svg">
<g class="sjx-svg-wrapper">
<image id="blabla" class="drag-svg"
href="https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png" height="200"
width="200"/>
</g>
</svg>
</div>
</div>
我尝试了什么?
$(document).on("contextmenu", 'g.sjx-svg-wrapper', function (e) {
// TRIES HERE
let left = e.offsetX;
let top = e.offsetY;
$("#contextMenu").css({
display: "block",
left: left,
top: top
}).addClass("show");
return false;
});
有什么问题?
问题是下拉菜单并没有像我们右键单击时出现的正常上下文菜单那样准确地显示在指针上。
而且当 svg 容器的宽度发生变化时,下拉位置会错位(即使再次右键单击)。
我尝试过使用偏移量的其他解决方案,但没有达到目的。 所以请提供一个可靠的方法来解决这个问题。
【问题讨论】:
标签: jquery svg bootstrap-4 position mouse