用div构建事件卡片更轻量兼容,外层class="event-card",内部按时间(time标签+datetime属性)、标题、描述、操作区分层,纯CSS通过:hover控制悬停展开与状态徽章,移动端用@media(hover: hover)回退并设触控热区≥44px。
直接用 div 套结构 + CSS 控制悬停、时间轴和状态标识,比用 article 或自定义组件更轻量、兼容性更好,也更容易适配移动端。
别一上来就套 article 或 section——活动卡片本质是「信息块」,不是独立内容单元。用 div 更稳妥,语义干扰小,样式也干净。
div 外层加 class="event-card",方便统一控制尺寸和阴影div,不用 h3 强塞标题(避免 SEO 干扰或屏幕阅读器误读)time 标签包裹,datetime 属性保留 ISO 格式,比如 <time datetime="2024-06-15T14:00">6月15日 14:00</time>
form 或嵌套交互控件过深,否则焦点管理容易出问题纯 CSS 实现「鼠标移入展开详情」比 JS 切换 class 更快,也避免 SSR 渲染错位。但要注意过渡触发条件和 z-index 层级。
:hover 触发 max-height 和 opacity 动画,别用 display: none/block(无法过渡)::before + content,配合 data-status 属性动态控制,例如:div[data-status="closed"]::before { content: "已结束"; }
z-index 必须高于周围元素,否则被遮挡;推荐设为 z-index: 10 起步:hover,可加媒体查询回退:@media (hover: hover) { … }卡片在小屏上堆叠变宽,不是简单缩放字体就能解决。关键在「内容裁剪策略」和「触控热区」。
立即学习“前端免费学习笔记(深入)”;
min-width: 280px 起步,避免 iPhone SE 上文字挤成一团display: -webkit-box 截断,但必须加 line-clamp: 2 和 -webkit-line-clamp,否则 Safari 不生效44px,iOS 触控标准;图标类操作按钮外层包一层 div 扩展点击范围最常被忽略的是 time 元素的 datetime 属性——它不参与渲染,但影响爬虫识别和辅助工具朗读,漏写会导致活动时间在搜索引擎结果里显示异常。