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

如何实现鼠标悬停图片时同时触发图片与文字的两种hover效果

问题原因

你的hover伪类绑定在了独立的同级子元素上:

  • 鼠标仅在img区域悬停时,只会触发img的hover效果,不会命中中间div的hover规则
  • 鼠标移动到中间div区域时,光标脱离img元素,img的hover效果直接失效
    且只有鼠标进入div本身的范围时,才会触发div的hover,所以只有中心区域能唤起文字效果。

解决方案

把hover触发条件绑定到两个元素的共同父容器.photo上,只要鼠标进入.photo的范围,就能同时触发两个子元素的交互效果。
你只需要修改CSS中两个hover选择器的规则即可,还可额外补充属性优化显示效果:

/* 补充父容器相对定位和溢出隐藏,确保定位正确、缩放不溢出 */
.photo {
  position: relative;
  overflow: hidden;
  margin: 0;
}

.photo img {
  opacity: 1;
  width: 100%;
  height: auto;
  transition: .5s ease;
  backface-visibility: hidden;
}

/* 将hover绑定到父容器,悬停父元素时触发img效果 */
.photo:hover img {
  opacity: 0.7;
  transform: scale(1.13);
}

/* 同理,悬停父元素时触发中间文字层的效果 */
.photo:hover .middle {
  opacity: 1;
}

.middle {
  transition: .5s ease;
  opacity: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  text-align: center;
  /* 如果不需要点击中间文字可加下面这行,避免文字层阻挡其他交互 */
  /* pointer-events: none; */
}

.text {
  background-color: #8b0000;
  color: white;
  font-size: 16px;
  padding: 16px 16px;
}

.pictures li {
  display: block;
  float: right;
  clear: right;
  position: relative;
  margin-bottom: 2.8rem;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:45:03