You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

鼠标悬停图片显示div后,无法点击div内按钮的问题求助

解决鼠标悬停显示div但点击内部按钮时div隐藏的问题

问题原因

你当前的实现应该是将hover事件仅绑定在了<img>元素上,当鼠标从图片移到informations div区域时,会触发图片的mouseleave事件,导致div被隐藏,进而无法完成按钮点击操作。


方案1:纯CSS实现(推荐,更简洁)

通过父容器的hover状态控制子元素的显示,只要鼠标处于父容器.Popular的范围内(包括图片和informations div),就保持div显示。

步骤1:添加CSS样式

.Popular {
  position: relative; /* 为子元素的绝对定位提供参考 */
  width: fit-content;
  height: fit-content;
}

.informations {
  position: absolute;
  top: 0;
  left: 0;
  display: none; /* 默认隐藏 */
  /* 自定义样式示例 */
  background-color: rgba(0,0,0,0.8);
  color: white;
  padding: 10px;
}

/* 父容器hover时显示informations */
.Popular:hover .informations {
  display: block;
}

步骤2:React代码无需修改hover相关逻辑

你原有JSX代码保持不变,CSS会自动处理显示/隐藏逻辑。


方案2:React状态控制

如果需要用JS逻辑控制显示状态,将鼠标事件绑定在父容器.Popular上,而非单独绑定在图片上。

代码示例

import { useState } from 'react';
// 导入你的图标组件:BsFillPlayCircleFill、FiPlusCircle等

function YourComponent() {
  // 其他业务逻辑...

  return (
    {/* 遍历渲染子项 */}
    {yourItemsArray.map((items, key) => {
      const [showInfo, setShowInfo] = useState(false);
      return (
        <div 
          className='Popular' 
          key={key} 
          ref={singleMovieRef}
          onMouseEnter={() => setShowInfo(true)}
          onMouseLeave={() => setShowInfo(false)}
        >
          <img src={`https://image.tmdb.org/t/p/original${items.poster_path}`} />
          <div 
            className='informations' 
            style={{ display: showInfo ? 'block' : 'none' }}
          >
            <div className='infoButton'>
              <div className='leftButton'>
                <BsFillPlayCircleFill className='playButton'/>
                <FiPlusCircle />
                <AiFillLike />
                <AiFillDislike />
              </div>
              <div className='rightButton'>
                <FaCircleChevronDown />
              </div>
            </div>
            <div className='titleAndOther'>
              {titleShow(items)}
              <p className='rating'>Rating: {items.vote_average}</p>
              <p className='type'>Genre: {items.media_type}</p>
            </div>
          </div>
        </div>
      );
    })}
  );
}

注意事项

  • 若使用CSS方案,确保.Popular容器的尺寸能覆盖图片和informations div的范围,避免鼠标移到div上时父容器的hover状态失效。
  • 若使用状态控制方案,需将useState放在循环内部,确保每个子项拥有独立的显示状态。

内容的提问来源于stack exchange,提问作者Bishek Karki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 10:20:27