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

实现Card鼠标悬停交互效果及响应式布局技术求助

实现卡片悬停交互效果(含响应式)

核心思路

用CSS的:hover伪类结合transition实现平滑过渡,通过Flex布局控制元素排列,确保卡片整体高度固定,同时适配不同屏幕尺寸。

完整代码示例

HTML结构

<div class="card">
  <img src="https://picsum.photos/400/300" alt="卡片图片" class="card-img">
  <h3 class="card-title">卡片标题</h3>
  <p class="card-desc">aaa</p>
</div>

CSS样式

/* 基础重置与全局样式 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.card {
  width: 90%;
  max-width: 350px;
  height: 380px; /* 固定整体高度 */
  margin: 2rem auto;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
}

.card-img {
  width: 100%;
  height: 220px; /* 默认图片高度 */
  object-fit: cover;
  transition: height 0.3s ease;
}

.card-title {
  margin: 1.5rem 0;
  font-size: 1.2rem;
  transition: transform 0.3s ease;
}

.card-desc {
  position: absolute;
  bottom: 2rem;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
  padding: 0 1rem;
  text-align: center;
}

/* 悬停状态 */
.card:hover .card-img {
  height: 160px; /* 悬停时图片缩小 */
}

.card:hover .card-title {
  transform: translateY(-1rem); /* 标题上移 */
}

.card:hover .card-desc {
  opacity: 1;
  visibility: visible;
}

/* 响应式适配 */
@media (max-width: 480px) {
  .card {
    height: 340px;
  }
  .card-img {
    height: 180px;
  }
  .card:hover .card-img {
    height: 130px;
  }
  .card-title {
    font-size: 1rem;
    margin: 1rem 0;
  }
}

关键细节说明

  • 固定卡片高度:给.card设置固定height,确保悬停前后整体尺寸不变。
  • Flex布局:让内部元素垂直排列,方便控制位置变化。
  • 过渡动画:给所有需要变化的属性添加transition,实现平滑的悬停效果。
  • 隐藏/显示描述文本:用opacity+visibility组合(比单纯display: none更适合过渡动画),配合绝对定位固定在卡片底部。
  • 响应式适配:通过媒体查询调整不同屏幕下的卡片高度、图片尺寸和字体大小,保证移动端体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:54:51