如何在Flutter中实现如图所示的申请人列表组件?
申请人卡片组件实现
以下是对应需求的申请人卡片组件的HTML和CSS实现,还原常见的申请者展示卡片样式:
HTML 结构
<div class="applicant-card"> <div class="applicant-avatar"> <img src="https://via.placeholder.com/80" alt="申请人头像"> </div> <div class="applicant-info"> <h3 class="applicant-name">John Doe</h3> <p class="applicant-position">前端开发工程师</p> <div class="applicant-skills"> <span class="skill-tag">HTML/CSS</span> <span class="skill-tag">JavaScript</span> <span class="skill-tag">React</span> </div> </div> <div class="applicant-actions"> <div class="rating"> <span class="star filled">★</span> <span class="star filled">★</span> <span class="star filled">★</span> <span class="star filled">★</span> <span class="star">☆</span> <span class="rating-text">4.0</span> </div> <button class="action-btn view-btn">查看详情</button> <button class="action-btn contact-btn">联系</button> </div> </div>
CSS 样式
/* 基础样式重置 */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: Arial, sans-serif; } .applicant-card { display: flex; align-items: center; gap: 1.5rem; padding: 1.2rem; border: 1px solid #e0e0e0; border-radius: 8px; max-width: 600px; margin: 1rem auto; box-shadow: 0 2px 4px rgba(0,0,0,0.05); transition: box-shadow 0.3s ease; } .applicant-card:hover { box-shadow: 0 4px 8px rgba(0,0,0,0.1); } .applicant-avatar img { width: 80px; height: 80px; border-radius: 50%; object-fit: cover; } .applicant-info { flex: 1; } .applicant-name { font-size: 1.2rem; font-weight: 600; color: #2d3748; margin-bottom: 0.3rem; } .applicant-position { color: #718096; margin-bottom: 0.8rem; } .applicant-skills { display: flex; gap: 0.5rem; flex-wrap: wrap; } .skill-tag { background-color: #edf2f7; color: #4a5568; padding: 0.3rem 0.6rem; border-radius: 20px; font-size: 0.85rem; } .applicant-actions { display: flex; flex-direction: column; align-items: center; gap: 0.8rem; } .rating { display: flex; align-items: center; gap: 0.2rem; } .star { color: #e2e8f0; font-size: 1.1rem; } .star.filled { color: #f6e05e; } .rating-text { margin-left: 0.3rem; color: #718096; font-size: 0.9rem; } .action-btn { padding: 0.6rem 1.2rem; border: none; border-radius: 6px; font-size: 0.9rem; cursor: pointer; transition: background-color 0.3s ease; } .view-btn { background-color: #ebf8ff; color: #2b6cb0; } .view-btn:hover { background-color: #bee3f8; } .contact-btn { background-color: #f0fff4; color: #2f855a; } .contact-btn:hover { background-color: #c6f6d5; } /* 响应式适配 */ @media (max-width: 500px) { .applicant-card { flex-direction: column; text-align: center; } .applicant-actions { flex-direction: row; width: 100%; justify-content: center; } }
实现说明
- 用Flexbox做卡片的横向布局,各个模块对齐规整,看着舒服
- 卡片拆成三个部分:头像、个人信息、操作按钮,逻辑清晰
- 技能标签用圆角浅灰背景,能一眼区分开,还能自动换行适配多技能
- 评分用实心/空心星星展示,再加上数字分,直观明了
- 两个操作按钮用不同颜色区分功能,鼠标放上去还有颜色变化,交互感拉满
- 加了移动端适配,屏幕小的时候卡片自动变纵向,手机上看也合适
内容的提问来源于stack exchange,提问作者Samet Demirtop
相关产品推荐
相关产品推荐

