实现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
相关产品推荐
相关产品推荐

