博客卡片 4 款(分类筛选 + 悬停放大 CSS 源码)

CSSJS 许可:自研原创

博客卡片组件源码:标签分类筛选、封面渐变与图标、阅读时长与日期元信息、悬停图片放大与箭头滑动,纯 CSS + 原生 JS 实现,适合博客列表页与资讯聚合页。

效果演示(真实可交互)

下方为 4 张博客卡片,顶部提供”全部 / CSS / JavaScript / 设计”四个筛选标签,点击后卡片带淡出与缩放过渡完成过滤。悬停卡片时封面的表情图标放大旋转、标题变色、“阅读全文”箭头向右滑动。

🎨
CSS 6 分钟

用 backdrop-filter 打造毛玻璃导航栏的 5 个细节

从模糊半径到内高光,手把手教你调出通透又不遮挡内容的玻璃质感导航栏。

阅读全文 →
⚙️
JavaScript 8 分钟

IntersectionObserver 实战:滚动触发动画的正确姿势

不引入任何库,用浏览器原生 API 实现数字滚动、渐显与视差,性能还比库更好。

阅读全文 →
🖌️
设计 5 分钟

Bento 布局设计原则:网格、节奏与留白如何取舍

从苹果官网到 Notion,拆解 Bento 卡片布局中信息层级与视觉节奏的平衡之道。

阅读全文 →
📊
JavaScript 7 分钟

requestAnimationFrame 入门:打造 60fps 的计数动画

理解帧循环与缓动函数,告别 setInterval 卡顿,写出丝滑的数字滚动效果。

阅读全文 →

完整代码

HTML 结构:每张卡片用 data-cat 标注所属分类,封面区放置一个可放大的表情图标占位,正文包含标签、日期、阅读时长、标题、摘要与阅读链接:

<article class="bc-card" data-cat="css">
  <div class="bc-cover cover-css"><span class="bc-emoji">🎨</span></div>
  <div class="bc-body">
    <div class="bc-meta">
      <span class="bc-tag">CSS</span>
      <time>2026-08-28</time>
      <span class="bc-read">6 分钟</span>
    </div>
    <h3 class="bc-title">用 backdrop-filter 打造毛玻璃导航栏的 5 个细节</h3>
    <p class="bc-excerpt">从模糊半径到内高光,手把手教你调出通透的玻璃质感导航栏。</p>
    <a class="bc-more" href="#">阅读全文 <span class="bc-arrow">→</span></a>
  </div>
</article>

核心 CSS:悬停反馈分三层——封面图标放大旋转、标题变色、箭头位移,全部用 transition 实现:

.bc-emoji { transition: transform .4s ease; }
.bc-card:hover .bc-emoji { transform: scale(1.25) rotate(-6deg); }
.bc-title { transition: color .25s ease; }
.bc-card:hover .bc-title { color: #8fa9ff; }
.bc-arrow { display: inline-block; transition: transform .25s ease; }
.bc-card:hover .bc-arrow { transform: translateX(5px); }

原生 JS 分类筛选(无第三方库):

tabs.forEach(tab => {
  tab.addEventListener('click', () => {
    const f = tab.dataset.filter;
    cards.forEach(card => {
      const show = f === 'all' || card.dataset.cat === f;
      if (show) {
        card.classList.remove('hide');
        requestAnimationFrame(() => card.classList.remove('fadeout'));
      } else {
        card.classList.add('fadeout');
        setTimeout(() => card.classList.add('hide'), 280);
      }
    });
  });
});

参数说明

参数默认值说明
data-cat—卡片分类标识,与筛选按钮 data-filter 对应
隐藏过渡时长280ms淡出后置 display:none 的延时
封面高度120px封面区高度,可换成真实图片
图标放大倍数1.25悬停时封面图标缩放
箭头位移5px悬停时”阅读全文”箭头右移距离

兼容性与性能

常见问题

Q: 封面想换成真实图片怎么做? 将 .bc-cover 内的表情图标替换为 <img>,给图片设置 width:100%; height:100%; object-fit:cover,悬停放大效果即可转移到图片上。

Q: 筛选时卡片会抖动吗? 不会,淡出卡片在动画结束后才 display:none,其余卡片通过网格自动重排,过渡期间视觉连贯。

Q: 标签和分类是写死的吗? 数据是演示用假数据,接入真实博客时建议用模板语法循环渲染,data-cat 与 data-filter 保持一致的约定即可。

Q: 可以商用吗? 可以,粤喵自研原创组件,免费商用无需署名,替换文案与配图即可用于生产环境。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核