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

如何实现特定样式卡片:非激活居中/激活时图片上移(Next.js+Tailwind)

实现方案(Tailwind CSS + 纯CSS两种版本)

核心逻辑

  • 固定卡片整体高度,确保激活状态下尺寸不变
  • 非激活态:利用弹性布局让图片在标题下方的剩余空间自动垂直居中,适配标题动态高度变化
  • 激活态:通过位移属性让图片上移,同时用绝对定位放置圆形箭头按钮,不占用额外布局空间

Tailwind CSS 实现代码

// Next.js 组件示例
export default function Card() {
  return (
    <div className="w-64 h-80 bg-white rounded-lg shadow-md relative transition-all duration-300 hover:bg-blue-500 group">
      {/* 动态高度标题 */}
      <h3 className="p-4 text-center text-gray-800 group-hover:text-white transition-colors">
        这是一个可能动态换行的标题内容,长度不固定
      </h3>
      {/* 图片容器 */}
      <div className="flex-1 flex items-center justify-center p-4 transition-transform duration-300 group-hover:-translate-y-8">
        <img src="/your-image.png" alt="卡片图片" className="w-32 h-32 object-contain" />
      </div>
      {/* 激活态箭头按钮 */}
      <button className="absolute bottom-4 left-1/2 -translate-x-1/2 w-10 h-10 rounded-full bg-white flex items-center justify-center text-blue-500 opacity-0 group-hover:opacity-100 transition-opacity">
        ↑
      </button>
    </div>
  )
}

关键细节

  • h-80 固定卡片高度,避免激活时尺寸变化
  • 图片容器用 flex-1 占据标题剩余的全部空间,配合 flex items-center justify-center 实现自适应居中
  • 激活时通过 group-hover:-translate-y-8 让图片上移,腾出底部空间
  • 箭头按钮用绝对定位固定在卡片底部,初始隐藏、激活时显示,不影响整体布局

纯HTML+CSS 实现代码

<div class="card">
  <h3 class="card-title">这是一个可能动态换行的标题内容,长度不固定</h3>
  <div class="image-container">
    <img src="your-image.png" alt="卡片图片" />
  </div>
  <button class="card-arrow">↑</button>
</div>
.card {
  width: 16rem;
  height: 20rem;
  background: #fff;
  border-radius: 0.5rem;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  position: relative;
  transition: background 0.3s ease;
}

.card:hover {
  background: #3b82f6;
}

.card-title {
  padding: 1rem;
  text-align: center;
  color: #1f2937;
  transition: color 0.3s ease;
}

.card:hover .card-title {
  color: #fff;
}

.image-container {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  transition: transform 0.3s ease;
}

.image-container img {
  width: 8rem;
  height: 8rem;
  object-fit: contain;
}

.card:hover .image-container {
  transform: translateY(-2rem);
}

.card-arrow {
  position: absolute;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%);
  width: 2.5rem;
  height: 2.5rem;
  border: none;
  border-radius: 50%;
  background: #fff;
  color: #3b82f6;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.3s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

.card:hover .card-arrow {
  opacity: 1;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:25:14