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

鼠标悬停卡片scale缩放时右侧图片偏移问题求助

解决卡片hover缩放时右侧图片上移的问题

核心问题分析

  1. 边框尺寸突变:hover时新增3px边框,导致卡片整体尺寸变大,内部flex布局的space-between会重新分配空间,底部图片因此被挤压上移
  2. 缩放渲染偏移:默认缩放原点虽为中心,但元素布局的微小变化在缩放时会被放大,进一步加剧视觉上的偏移感

修复方案

  • 给卡片默认添加透明边框,hover时仅修改边框颜色,彻底避免尺寸突变
  • 显式设置transform-origin: center,确保缩放始终以卡片中心为基准
  • 固定内部容器的布局规则,防止空间分配异常

修改后的完整代码

CSS 部分

/* GÉNÉRAL */

:root {
  --color-accent: #4e6eff;
  --color-accent-dark: #3a56d3;
  --color-black: #252728;
  --color-white: #fdfdff;
  --color-blacker: #0c0d0d;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 0;
}

body::-webkit-scrollbar {
  display: none;
}

* {
  font-family: Arial, Helvetica, sans-serif;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

*::selection {
  background-color: #4e6effba;
}

body {
  background-color: var(--color-black);
  color: var(--color-white);
}


/*  COMMON STYLE */

.bg-accent {
  background-color: var(--color-accent);
  color: var(--color-white);
}

a {
  color: var(--color-white);
  text-decoration: none;
}

img {
  width: 100%;
}


/*  */

.select-membres__row--2 {
  display: flex;
  justify-content: space-evenly;
  gap: 2rem;
  padding: 2rem 0;
}

.membre-carte {
  display: flex;
  padding: 1em;
  width: 400px;
  height: 200px;
  gap: 8%;
  border-radius: 25px;
  background-color: var(--color-blacker);
  text-align: center;
  scale: 1;
  transition: scale 100ms ease-out, border-color 150ms ease;
  border: 3px solid transparent;
  transform-origin: center;
}

.membre-carte:hover {
  scale: 1.1;
  transition: scale 150ms cubic-bezier(0.22, 0.47, 0.35, 0.92), border-color 150ms ease;
  border-color: var(--color-accent);
}

.membre-carte>* {
  width: 50%;
}

.membre-carte .carte-pp {
  border-radius: calc(25px - 0.5em);
  height: 100%;
  object-fit: cover;
}

.perso-cont {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: 100%;
}

.carte__nom {
  font-size: 1.2rem;
}

.perso-cont .img-cont {
  width: 120px;
  margin-inline: auto;
  display: flex;
  flex-shrink: 0;
}

HTML 部分(保持原结构即可)

<div class="select-membres__row--2">
  <a href="#">
    <div class="membre-carte">
      <img src="https://source.unsplash.com/random/50x50" class="carte-pp">
      <div class="perso-cont">
        <h4 class="carte__nom">image 1</h4>
        <p class="carte__surnom">lorem</p>
        <div class="img-cont">
          <img src="https://source.unsplash.com/random/40x40">
        </div>
      </div>
    </div>
  </a>
  <a href="#">
    <div class="membre-carte">
      <img src="https://source.unsplash.com/random/50x50" class="carte-pp">
      <div class="perso-cont">
        <div>
          <h4 class="carte__nom">image 2</h4>
          <p class="carte__surnom">lorem</p>
        </div>
        <div class="img-cont">
          <img src="https://source.unsplash.com/random/40x40">
        </div>
      </div>
    </div>
  </a>
</div>

额外优化点

  • 父容器添加gap和padding,防止卡片缩放时互相重叠
  • 左侧图片设置object-fit: cover,确保固定尺寸内保持比例
  • 底部图片容器添加flex-shrink: 0,避免被布局压缩

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:05:31