诗词随机切换卡片特效
诗词随机切换卡片特效
2小时前 3 阅读
  • 首页
  • /
  • 分享
  • /
  • 正文
  • 每一张卡片,都是一句诗。每一次切换,都是一次与古人的相遇。

    这个卡片特效,可以在博客侧边栏、首页横幅或任意位置嵌入。它会在已收录的诗词中自动轮播,用户也可以手动切换。


    效果演示

    完整代码如下,可直接保存为 .html 文件在浏览器打开:


    数据结构

    卡片依赖一个简洁的 JSON 数组:

    const poems = [
      { type: '词', quote: '落花人独立,微雨燕双飞。', author: '晏几道', dynasty: '北宋', title: '临江仙' },
      { type: '词', quote: '一蓑烟雨任平生。', author: '苏轼', dynasty: '北宋', title: '定风波' },
      { type: '诗', quote: '但愿人长久,千里共婵娟。', author: '苏轼', dynasty: '北宋', title: '水调歌头' },
      // ... 可无限扩展
    ];
    字段说明
    type左上角标签,"诗"或"词"
    quote卡片中央显示的名句
    title诗词标题
    author作者名
    dynasty朝代

    核心机制

    1. 淡入淡出动画

    通过 CSS class 切换实现,不需要任何动画库:

    .poetry-card.fade-out {
      opacity: 0;
      transform: translateY(-10px);
      transition: opacity 0.3s, transform 0.3s;
    }
    .poetry-card.fade-in {
      opacity: 1;
      transform: translateY(0);
      transition: opacity 0.3s, transform 0.3s;
    }

    切换时:先加 fade-out(淡出并上移)→ 300ms 后更新内容 → 再加 fade-in(淡入归位)。

    2. 自动播放与手动切换

    function startTimer() {
      autoTimer = setInterval(() => nextPoem(), INTERVAL);
    }
    function resetTimer() {
      clearInterval(autoTimer);
      if (isPlaying) startTimer();
    }

    每次手动切换后重置计时器,自动播放不会中断。

    3. 点击暂停/恢复

    点击卡片本身,切换自动播放状态。"● AUTO"变为"○ PAUSE",适合用户想停下来细读某一句诗的场景。


    可调节参数

    参数默认值作用
    INTERVAL5000自动切换间隔(毫秒)
    transition0.3s淡入淡出动画时长
    背景色#fdf5ea暖米色卡片背景
    边框色#c9a96e暖金色左侧边框

    部署建议

    独立页面:直接保存为 .HTML 文件即可运行
    嵌入博客:将 <style> 部分放入博客主题的 CSS,将 <div><script>部分嵌入 HTML 模板即可
    接入已有诗词库:把现有的 30+ 首诗词数据导出为 JSON,替换掉 poems 数组即可

    1

    评语 (0)

    取消