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

如何用CSS实现两张图片同位置放置、hover时切换显示的效果

解决方案

你之前设置position: absolute未生效的核心原因是没有给父容器添加相对定位作为定位上下文,绝对定位元素会默认相对于整个页面定位,自然无法实现两张图片在按钮内部重叠的效果,按以下调整即可实现需求:

核心修改点

  • 给.shop-button添加position: relative,作为两张箭头图片的定位参照
  • 给箭头图片添加统一的绝对定位、垂直居中规则,保证两张图完全重叠在同一位置
  • 适当调大按钮右侧内边距,避免按钮文字和箭头重叠

修改后完整代码

CSS代码

.shop-button {
      cursor: pointer;
      padding: 20px 45px 21px 25px; /* 右侧padding加大,预留箭头位置 */
      border: 1px solid black;
      background-color: white;
      color: black;
      position: relative; /* 新增:作为绝对定位的父容器 */
      transition: background-color 0.3s ease-in-out, color 0.3s ease-in-out, border-color 0.3s ease-in-out;

      .arrow-image {
          opacity: 0;
          transition: opacity 0.3s ease-in-out;
        }
      /* 新增:明确默认状态下箭头的显示规则 */
      .arrow-image-hover {
          opacity: 1;
          transition: opacity 0.3s ease-in-out;
      }

      &:hover {
        background-color: black;
        border-color: black;
        color: white;
        .arrow-image-hover {
          opacity: 0;
        }
        .arrow-image {
          opacity: 1;
        }
      }
    }

    a {
      text-decoration: none;
      img {
        position: absolute; /* 新增:绝对定位实现重叠 */
        top: 50%; /* 新增:垂直居中对齐 */
        transform: translateY(-50%); /* 新增:修正垂直居中偏移 */
        right: 25px; /* 新增:固定在按钮右侧25px位置 */
      }
    }

HTML代码无需修改,保持原有结构即可

<div class="button-wrapper">
    <a class="shop-button" [routerLink]="'/shop'">GO TO SHOPPING
        <img src="/assets/arrow_1.svg" class="arrow-image"  alt="arrow" />
        <img src="/assets/arrow_2.svg" class="arrow-image-hover"  alt="arrow" />
    </a>
</div>

如果箭头和文字的间距不符合预期,调整right属性或者按钮的padding-right数值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:24:02