如何在鼠标悬停到页面上的所有div上添加悬停效果?

卡尔·德奥莱昂·伦格伦

我有一个16x16的小方块网格。我添加了永久的“悬停”效果,当我将鼠标放在其上方时,使第一个框变为红色。但是,我想向页面上的所有框添加相同的效果。我不知道该怎么做-我试图在整个页面上添加一个事件监听器,并使用了target.nodeName和target.NodeValue,但无济于事。我包含了工作版本,其中,将鼠标悬停时修复框变为红色。

var n=16; //take grid column value as you want

const bigContainer = document.querySelector('.bigContainer')

for(var i = 1; i < n; i++) {
    bigContainer.innerHTML+='<div class="row">';

    for(j = 0; j < n; j++) {
        bigContainer.innerHTML+='<div class="smallBox">';
    }
}

const smallBox = document.querySelector('.smallBox');

smallBox.addEventListener('mouseover', () => {
    smallBox.classList.add('permahover');
});
.smallBox {
    border: 1px solid black;
    width: 20px;
    height: 20px;
    display: inline-block;
}

.permahover {
    background: red;
}

h1 {
    text-align: center;
}

.bigContainer {
    text-align: center;
}
<h1>Etch-a-Sketch Assignment - The Odin Project</h1>
<div class="bigContainer">

</div>

达蒙

您遇到的直接问题是,这仅是查询一个元素,然后向其中添加一个事件侦听器。

const smallBox = document.querySelector('.smallBox');

smallBox.addEventListener('mouseover', () => {
    smallBox.classList.add('permahover');
});

在代码的上面部分,querySelector仅返回第一个匹配的元素。您可能在此处查找querySelectorAll,该查询返回匹配元素NodeList

您有两个选择(如果您想进一步重组代码,可能还有其他选择)。天真的方法实际上是查询所有单元,并向每个单元添加事件侦听器。

var n=16; //take grid column value as you want

const bigContainer = document.querySelector('.bigContainer')

for(var i = 1; i < n; i++) {
    bigContainer.innerHTML+='<div class="row">';

    for(j = 0; j < n; j++) {
        bigContainer.innerHTML+='<div class="smallBox">';
    }
}

const smallBoxes = document.querySelectorAll('.smallBox');

[...smallBoxes].forEach(smallBox => {
  smallBox.addEventListener('mouseover', () => {
      smallBox.classList.add('permahover');
  });
})
.smallBox {
    border: 1px solid black;
    width: 20px;
    height: 20px;
    display: inline-block;
}

.permahover {
    background: red;
}

h1 {
    text-align: center;
}

.bigContainer {
    text-align: center;
}
<h1>Etch-a-Sketch Assignment - The Odin Project</h1>
<div class="bigContainer">

</div>

另一个选择是使用您确定的事件委托这是您可以利用的方法。注意:这种方法对于诸如“ mouseover”之类的侵略性事件来说有点技巧,因为您可能会得到假阳性目标(例如外部容器)。

var n=16; //take grid column value as you want

const bigContainer = document.querySelector('.bigContainer')

for(var i = 1; i < n; i++) {
    bigContainer.innerHTML+='<div class="row">';

    for(j = 0; j < n; j++) {
        bigContainer.innerHTML+='<div class="smallBox">';
    }
}

bigContainer.addEventListener('mouseover', e => {
  var target = e.target

  if (target !== bigContainer) {
    target.classList.add('permahover')
  }
})
.smallBox {
    border: 1px solid black;
    width: 20px;
    height: 20px;
    display: inline-block;
}

.permahover {
    background: red;
}

h1 {
    text-align: center;
}

.bigContainer {
    text-align: center;
}
<h1>Etch-a-Sketch Assignment - The Odin Project</h1>
<div class="bigContainer">

</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

“如何在 <tr> 上添加”鼠标悬停和鼠标悬停?

如何在目标页面图形上添加鼠标悬停图像

当用户将鼠标悬停在按钮的父容器上时,如何在按钮上添加悬停效果?

带有鼠标悬停效果的网格库上的文本

鼠标悬停在所有元素上同时发生的效果

如何在NodeJS中使用PhantomJS模拟鼠标悬停或在页面上运行JS函数

当鼠标悬停在悬停元素上时,如何设置悬停效果继续显示?

全屏按钮上的鼠标悬停效果

如何在鼠标悬停时在 CSS 背景图像上创建缩小效果?

将鼠标悬停在图像上添加效果,再次悬停使其消失

如何在不同元素上触发鼠标悬停以在元素上进行鼠标悬停?

一个列表项而不是所有列表项的ReactJS悬停/鼠标悬停效果

CSS效果,将鼠标悬停在div容器上,所有其他div容器会降低不透明度

更改鼠标悬停CSS上的所有内容

将鼠标悬停在所有图块上

将鼠标悬停在按钮上,同时仍具有其背后元素的悬停效果

将鼠标悬停在该图像上方的按钮上时,如何对图像应用悬停效果?

将鼠标悬停在具有CSS变换比例的div上后添加动画

在将鼠标悬停到具有不同类的元素时将样式添加到列表元素

如何在 JavaScript 中添加/删除鼠标悬停类?

移除鼠标悬停效果

jQuery鼠标悬停效果

如何在鼠标悬停在div中心对齐图像

如何在鼠标悬停时显示div元素?

如何在鼠标悬停时显示隐藏的“ div”?

鼠标悬停在表格中除第一行外的所有行上的效果

表和鼠标悬停效果(悬停)

如何在D3中的节点上绘制的饼图上添加鼠标悬停属性?

如何在WooCommerce中将鼠标悬停在产品上添加更多信息(节选)