如何实现 JS,以便当我将图像悬停在图库中时,它会影响除悬停图像之外的所有其他图像?

Posted

技术标签:

【中文标题】如何实现 JS,以便当我将图像悬停在图库中时,它会影响除悬停图像之外的所有其他图像?【英文标题】:How can I implement JS so that when I hover an image in a gallery it affects every other image except the hovered image? 【发布时间】:2022-01-13 19:59:09 【问题描述】:

我正在创建一个图像缩略图库,其中每个缩略图都将链接到另一个页面上的全尺寸图像。到目前为止,当用户将鼠标悬停在图像上时,一个红色框会使用 CSS ::before 伪类覆盖图像。

.overlay 
  position: relative;
  display: inline-block;


.overlay>img 
  vertical-align: middle;


.overlay::before 
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: red;
  transition: 0.2s ease;
  opacity: 0;


.overlay:hover::before 
  opacity: 1;
<div class="overlay"><img src="https://via.placeholder.com/280x280"></div>
<div class="overlay"><img src="https://via.placeholder.com/333x111"></div>
<div class="overlay"><img src="https://via.placeholder.com/111x333"></div>
<div class="overlay"><img src="https://via.placeholder.com/222x222"></div>
<div class="overlay"><img src="https://via.placeholder.com/111x172"></div>

我想更改交互,以便当用户将鼠标悬停在图像上时,除了悬停在图像上的图像之外,图库中的所有其他图像(具有“覆盖”类)都将被红色框覆盖。这将通过用红色覆盖其他图像来将焦点放在悬停的图像上。

似乎 javascript 将是完成这项工作的最佳方式,我如何用我已经编写的内容实现 js?

我也在尝试 CSS :not pseudo,但无法使其正常工作。

【问题讨论】:

您可以使用 ~ 在悬停后的叠加元素上产生效果。但是没有办法使用纯CSS来选择之前的那些 您是否编写了任何可以向我们展示的 Javascript。例如鼠标悬停事件。 如果您想在没有 javascript 的情况下创建焦点,请使用背景(例如模糊)。 【参考方案1】:

$('.overlay').hover(fnOver, fnOut)
  function fnOver() 
      $('.overlay').not(this).addClass('active')
  
  function fnOut() 
      $('.overlay').not(this).removeClass('active')
  
 .overlay 
    position: relative;
    display: inline-block;


.overlay>img 
    vertical-align: middle;


.overlay::before 
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: red;
    transition: 0.5s ease;
    opacity: 0;


.active::before 
    opacity: 1;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="overlay"><img src="https://via.placeholder.com/280x280"></div>
<div class="overlay"><img src="https://via.placeholder.com/333x111"></div>
<div class="overlay"><img src="https://via.placeholder.com/111x333"></div>
<div class="overlay"><img src="https://via.placeholder.com/222x222"></div>
<div class="overlay"><img src="https://via.placeholder.com/111x172"></div>

【讨论】:

这很好用,谢谢!我以前没有听说过在jquery中遍历。轻松过渡不再有效,但这对我来说不是一个交易破坏者。 我更新了我的答案,轻松过渡正在工作。你可以再试一次。

以上是关于如何实现 JS,以便当我将图像悬停在图库中时,它会影响除悬停图像之外的所有其他图像?的主要内容,如果未能解决你的问题,请参考以下文章

将鼠标悬停在 X 上时,如何仅在单个列表中显示 X?

仅当我将鼠标悬停在其上时如何使图像出现

从图库中获取图像缓慢[重复]

悬停时更改 SVG 填充和文本突出显示颜色

当我将鼠标悬停在链接上时希望切换图像

如何绘制菜单列表悬停有效的图像地图?