v2.0.0 · Full-card custom worlds

不是卡片模板,是完整界面。

每一张牌都可以是仪表盘、课程页面、终端、文章或另一个 Web Component。 下面不是静态截图,而是一组可以拖动、切换和内部滚动的完整成品。

四张完整卡片,直接试玩。

点击后面的牌、拖动当前牌,或使用下方按钮切换。终端和文章卡片还可以在卡片内部滚动。

Personal progress
今天也在向前。
连续学习18 天
本周训练4.6 h
GitHub 提交23 次
博客更新5 篇
本周计划72%
Spring Boot · 第 4 章
把一次请求讲清楚。

从 Controller 到数据库,再从实体转换为页面需要的数据。

01请求进入 Controller8 min
02Service 编排业务12 min
03Repository 隔离存储15 min
04DTO 与 VO 的边界10 min
05完成一次重构20 min
狐不九 / fan-poker-deck● ● ●
fox@lab:~/fan-poker$ npm test static validation node and SSR import package size chromium interaction smoke fox@lab:~/fan-poker$ npm pack --dry-run package: @hubujiu/fan-poker-deck version: 2.0.0 status: ready
isolated worlds
floating scrollbars
gesture arbitration
zero dependencies
Design note · 06 min read
一张卡片,也可以装下一篇完整文章。

组件不替内容决定结构,只提供边界、动画和交互秩序。

过去的卡片组件通常先规定封面、标题、正文和页脚,再让内容填入这些固定位置。

Fan Poker Deck v2 反过来处理:卡片获得一个独立世界,使用者自己决定里面是什么。

边界归组件,世界归卡片。

当内容超过卡片尺寸时,滚动仍发生在卡片内部。原生滚动条不会常驻,鼠标靠近边缘时才显示浮动控件。

继续向下滚动,可以确认这不是被截断的静态样张,而是一张真正能够承载长内容的卡片。

同一个牌组还可以混合仪表盘、表单、小游戏和其他 Web Component,它们的样式不会互相串色。

卡片不再是模板。

成品可以完全不同,但牌组切换、手势、滚动和可访问性由同一个组件统一处理。

完整自定义

组件不插入固定封面、标题、正文或页脚。

独立世界

每张卡片拥有自己的 Shadow Root 和视觉规则。

边缘滚动

隐藏原生滚动条,只在右边或底边浮出玻璃式控件。

手势仲裁

横向内容优先滚动,不再与牌组切换争抢鼠标。

SSR safe

Node 与服务端渲染环境仍可安全导入模块。

0 deps

没有运行时依赖,也没有内置设计系统包袱。

复制,然后建立自己的卡片世界。

生产页面固定版本地址,升级节奏留在自己手里。

<script type="module"
  src="https://cdn.jsdelivr.net/npm/@hubujiu/fan-poker-deck@2.0.0/dist/fan-poker.js">
</script>

<fan-poker card-width="390px" card-height="520px" aria-label="课程">
  <fan-card aria-label="第一章">
    <style>
      :host {
        display: block;
        min-height: 100%;
        background: #fff8ed;
      }
    </style>

    <main>整个卡面由你决定。</main>
  </fan-card>
</fan-poker>

旧页面暂时不能迁移?

继续固定 v1.0.3,等卡片结构改造完成后再进入 v2。

查看迁移指南