首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能帮我把我的自定义上下文菜单位置在我的诅咒旁边吗?

有人能帮我把我的自定义上下文菜单位置在我的诅咒旁边吗?
EN

Stack Overflow用户
提问于 2022-08-04 21:47:45
回答 1查看 52关注 0票数 0

如前所述,我需要在我的自定义上下文菜单上提供一些帮助,可能需要几个星期的时间,或者是一个如何解决问题的新想法,或者更好地解决这个问题的方法。(如果可能的话,HTML和CSS应该保持原样)。

我不知道,我应该输入什么,但是堆栈溢出说,我应该写更多,因为有那么多的代码,所以忽略这里的方括号中的文本。

HTML:

代码语言:javascript
复制
    <!-- ----------------------------------------- [CONTEXT MENU] ----------------------------------------- -->
    <div id="context-menu">
        <div class="item-title" id="context-menu-title">
            <i></i>
            <h1>Schnellwahl:</h1>
        </div>
        <div class="item" id="context-menu-home" onmouseleave="contextMenuHome_notActive()"
            onmouseenter="contextMenuHome_active()">
            <a href="/index.html"><i class="fa-solid fa-house"></i>Home</a>
        </div>
        <div class="item" id="context-menu-contact" onmouseleave="contextMenuContact_notActive()"
            onmouseenter="contextMenuContact_active()">
            <a href="/kontakt.html"><i class="fa-solid fa-address-book"></i>Kontakt</a>
        </div>
        <div class="item" id="context-menu-link" onmouseleave="contextMenuLinks_notActive()"
            onmouseenter="contextMenuLinks_active()">
            <a href="/link.html"><i class="fa-solid fa-link"></i>Links</a>
        </div>
        <div id="context-menu-datenschutz" class="item">
            <a id="item-datasafety-lock-open" href="/datenschutz.html"><i
                    class="fa-solid fa-lock-open"></i>Datenschutz</a>
            <a id="item-datasafety-lock-closed" href="/datenschutz.html"><i class="fa-solid fa-lock"></i>Datenschutz</a>
        </div>
    </div>

CSS:

代码语言:javascript
复制
/*--------------- [CONTEXT MENU] ---------------*/

#context-menu {
    position: fixed;
    z-index: 10000;
    width: 150px;
    background: #494949;
    transform: scale(0);
    transform-origin: top left;
    margin-top: 50px;
    margin-left: 2.5px;
}

#context-menu h1 {
    font-size: 1.5rem;
    margin: 0;
    margin-left: 5px;
    font-weight: 600;
}

#context-menu h1::before {
    content: " ";
    position: absolute;
    left: 0;
    bottom: 145px;
    background-color: #e91e63;
    height: 2px;
    box-sizing: border-box;
    width: 150px;
    margin-top: 5px;
}

#context-menu.active {
    transform: scale(1);
    transition: transform 200ms ease-in-out;
}

#context-menu .item {
    padding: 8px 10px;
    font-size: 15px;
    color: #eee;
}

.item-title {
    padding: 8px 10px;
    font-size: 15px;
    color: #eee;
}


#item-datasafety-lock-closed {
    display: none;
    transition: all 0.5s ease;
}

#item-datasafety-lock-open {
    transition: all 0.5s ease;
}

#context-menu-datenschutz:hover #item-datasafety-lock-closed {
    display: block;
}

#context-menu-datenschutz:hover #item-datasafety-lock-open {
    display: none;
}

#context-menu .item:hover {
    background: #555;
}

#context-menu .item a {
    color: #ffffff;
    text-decoration: none;
}

#context-menu .item i {
    display: inline-block;
    margin-right: 5px;
    margin-left: 10px;
}

#context-menu hr {
    margin: 2px;
    border-color: #555;
}

联署材料:

代码语言:javascript
复制
//----------------------------------------- [CONTEXT MENU] -----------------------------------------

const hoverContacts = document.getElementById("contextMenuContact")

window.addEventListener("contextmenu", function (event) {
    event.preventDefault();
    var contextElement = document.getElementById("context-menu");
    contextElement.style.top = event.offsetY + "px";
    contextElement.style.left = event.offsetX + "px";
    contextElement.classList.add("active");
});



window.addEventListener("click", function () {
    this.document.getElementById("context-menu").classList.remove("active")
});

function contextMenuHome_active() {
    document.getElementById("context-menu-home").innerHTML = '<a href="/index.html"><i class="fa-solid fa-house fa-beat" ></i>Home</a>'
}

function contextMenuHome_notActive() {
    document.getElementById("context-menu-home").innerHTML = '<a href="/index.html"><i class="fa-solid fa-house" ></i>Home</a>'
}

function contextMenuContact_active() {

    document.getElementById("context-menu-contact").innerHTML = `            <a onmouseout="contextMenuContact_notActive" onmouseover="contextMenuContact_active" href="/kontakt.html"><i class="fa-solid fa-address-book fa-bounce" style=" --fa-bounce-start-scale-x: 1; --fa-bounce-start-scale-y: 1; --fa-bounce-jump-scale-x: 1; --fa-bounce-jump-scale-y: 1; --fa-bounce-land-scale-x: 1; --fa-bounce-land-scale-y: 1; --fa-bounce-rebound: 0;" ></i>Kontakt</a>`


}

function contextMenuContact_notActive() {


    document.getElementById("context-menu-contact").innerHTML = `            <a onmouseout="contextMenuContact_notActive" onmouseover="contextMenuContact_active" href="/kontakt.html"><i class="fa-solid fa-address-book"></i>Kontakt</a>`

}

function contextMenuLinks_active() {
    document.getElementById("context-menu-link").innerHTML = '<a href="/link.html"><i class="fa-solid fa-link fa-flip"></i>Links</a>'
}

function contextMenuLinks_notActive() {
    document.getElementById("context-menu-link").innerHTML = '<a href="/link.html"><i class="fa-solid fa-link"></i>Links</a>'
}

谢谢您一直鼓励我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 22:08:10

更新一下,试试这样的东西。只是一个警告,它很可能在浏览器之间不太兼容。

见答案:How to disable right-click context-menu in JavaScript

代码语言:javascript
复制
// html
<body oncontextmenu="handleOnContextMenu()">...</div>

// maybe you can set it on oyur div as well, im not sure to be honest 
<div class="your-div" oncontextmenu="handleOnContextMenu()">...</div>

// js
function openCustomContext(x, y) {
  const yourCtxElement = document.getElementById('ctx-menu')
  yourCtxElement.style.top = y + 'px';
  yourCtxElement.style.left = x + 'px';
}

function handleOnContextMenu(e) {
  e.preventDefault();

  const x = e.clientX;
  const y = e.clientY;

  openCustomContext(x, y)
}

或者您可以像这样添加它作为侦听器:

代码语言:javascript
复制
window.addEventListener('contextmenu', function (e) { 
  e.preventDefault(); 

  // get your X/Y here...
  const x = e.clientX;
  const y = e.clientY;
  openCustomContext(x, y);
}, false);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73242515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档