javascript - - 已解决 - Javascript 'onMouseMove'/CSS :hover conflict

标签 javascript css hover conflict

我的 Web 元素有问题。 我使用 js 脚本创建了一个“ NEON 队列”效果,当我在屏幕上移动鼠标时它会跟随我的鼠标指针并且效果很好。 我在我的菜单项上使用了一个 css 属性,使它们在悬停时发光。

问题是,它正在工作,但 css 效果仅在 NEON 圈完全消失后才适用。我怎样才能避免这种等待?

起初我认为这是因为圆圈越过 div 但后来我设置了 z-indexes 但它仍然导致问题。

这是html代码:

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <script type="text/javascript" src="main.js"></script>
    <title>Document</title>
</head>
<body>

    <div id="menu">

    <img src="img/logo.png" class="logo"/> 
        <ul>
            <li class="item">WEB</li>
            <li class="item">VPS</li>
            <li class="item">SERVEUR DEDIE</li>
            <li class="item">HOUSING</li>
        </ul>
      </div>



</body>
</html>

这是脚本,我按照 youtube 教程进行了一些修改:

 document.onmousemove = animateCircles;


function animateCircles(event){
    var circle = document.createElement("div");
    circle.setAttribute("class","circle");
    document.body.appendChild(circle);
    circle.style.left = event.clientX+'px';
    circle.style.top= event.clientY+'px';    
    deletecircle(circle);

}

function deletecircle(fadeTarget) {    
var fadeEffect = setInterval(function () {
    if (!fadeTarget.style.opacity) {
        fadeTarget.style.opacity = 1;
    }
    if (fadeTarget.style.opacity > 0) {
        fadeTarget.style.opacity -= 0.1;


    } else {
        clearInterval(fadeEffect);
        fadeTarget.parentNode.removeChild(fadeTarget);
    }
}, 50);
}

最后是 css 属性:

    html{
    height: 100%;
}
body { 

    margin:0;
    height: 100%;
    background: linear-gradient(#070b13, #1c2641);
    background-position: fixed;
    background-repeat: no-repeat;
    background-size : cover;
    background-attachment: fixed;
    color: #fdfdfd;
    font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;

}

/* MENU ##################################################################################*/
#menu {
    width: 300px;
    font-size: 25px;    
    font-weight: lighter;
    margin-left: 10%;
    margin-top: 15%;
    z-index:10;
}

#menu li{
    list-style: none;
    padding: 40px;   
    opacity: 0.7;     
    transition: all 0.5s ease-in !important; 
    z-index: 10;
}

/*
#menu li:hover{    
    color: #00f6ff !important; 
    opacity: 1 !important;
    text-shadow:0 0 20px #31ccff !important; 
    z-index: 10 !important;
}*/

#menu .logo {
    height: 16px;
    right: 40px;
    top: 40px;
    position: absolute;
}

/* MOUSE ANIMATION ##############################################################################*/
.circle {
    width: 5px;
    height: 5px;
    background-color: #00f6ff;
    border-radius:50%;
    position: absolute;
    box-shadow: 0 0 10px #31ccff;
    z-index:0;
}

最佳答案

您为圆圈生成的 div 位于菜单项的前面。您设置的 z-index 属性不起作用,因为圆形 div 未相对于菜单项定位。

将圆类设置为具有 -1 的 z-index 似乎可以解决该问题,因为这有效地强制绝对定位的圆 div 出现在页面上其他内容的后面。

您的圈子类别如下:

.circle {
    width: 5px;
    height: 5px;
    background-color: #00f6ff;
    border-radius:50%;
    position: absolute;
    box-shadow: 0 0 10px #31ccff;
    z-index:-1;
}

JSFiddle 链接:https://jsfiddle.net/y8vo1jL5/

关于javascript - - 已解决 - Javascript 'onMouseMove'/CSS :hover conflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59324324/

相关文章:

javascript - 为多个div元素的左边框生成随机颜色

html - 在一个元素中应用两个伪类

jquery - 如何做这个渐进的悬停效果

html - 在悬停另一个元素时更改 SVG 填充颜色

css - 图像鼠标悬停,出现按钮

Javascript正则表达式匹配不包含关键字

javascript - 不在 443 上运行 https 这怎么可能?

javascript - 相邻元素与 native react 时出错

php - 包括:带有 .php 文件扩展名的 CSS?

javascript - Canvas 在 IoS 移动设备上无法正常工作