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

如何实现hover时图片在父div内向右扩展而非向左的效果

解决方案

核心原因:你当前直接修改height实现放大效果时,图片宽度会等比自动增加,加上你给图片设置了right: 16px定位,图片右边缘始终和容器右侧保持固定距离,所以宽度增加时只能向左侧延伸,也就是你现在看到的向左扩展的效果。

修改方案很简单,改用transform实现缩放,同时控制缩放的基点即可,调整后的完整代码如下:

CSS代码

#background {
  border-radius: 0px 25px 25px 0px;
  cursor: pointer;
  width: 250px;
  height: 300px;
  border: 3px solid black;
  border-right: 2px solid black;
  position: relative;
  /* 如果不需要图片放大后超出容器显示,就加下面这行,不需要可以删掉 */
  overflow: hidden;
}
#desc{
  border-radius: 0px 0px 22px 0px;
  background: rgba(190, 190, 190, 0.7);
  background-repeat: repeat;
  width: 100%;
  left: 0px;
  height: 50px;
  bottom: 0px;
  position: absolute;
  z-index: 2;
}
#man{
  height: 100%;
  width: auto;
  position: absolute;
  transition: all 0.4s ease;
  bottom: 0;
  /* 调整这个数值,直到初始状态下图片右边缘距离容器右侧16px即可 */
  left: 114px;
  /* 设置缩放基点为左下角,放大时会向右上方扩展 */
  transform-origin: left bottom;
}
#man:hover{
  /* 用transform替代修改height,性能更好,也能控制扩展方向 */
  transform: scale(1.08);
}

HTML代码

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="background" style="background: url(paper.gif); background-size: cover;">
  <img id="man" src="https://www.watertankfactory.com.au/wp-content/uploads/2015/08/Smiling-young-casual-man-2.png" />
  <div id="desc"></div>
</div>
</body>
</html>

只需要把原来img标签行内样式里的right:16px删除即可。如果需要调整放大比例,直接修改scale的参数就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:18:02