为产品准备图像、动画与交互素材
按画面和操作选择位图、SVG 或 Canvas,结合像素预算、素材来源、减少运动与加载失败设计教学卡片。
制定卡片资源与交互方案,并验证图像失败、减少运动和命中边界。
资料卡片上的图可以是照片、矢量图标,也可以是脚本绘制的交互示意。选错表达方式会增加下载与维护成本:一张简单箭头没有必要变成巨大位图,复杂照片也不会因为转为 SVG 文件名就变成矢量图。
教学案例是资料卡片展示,包含示意图、悬停反馈和一个可点选区域。目标是按图形用途决定资源形式,明确加载失败与减少动画时的行为。几何代码只模拟命中区域,不生成图片,也不声称真实 Canvas 已运行。
位图、SVG 与 Canvas 如何表达画面
位图保存像素,尺寸、编码与压缩影响清晰度和文件体积,适合照片与纹理。SVG 描述路径、形状等矢量信息,适合图标和可缩放示意;复杂路径、嵌入位图与滤镜仍会增加资源和渲染成本。文件格式本身不保证轻量。
Canvas 是通过脚本绘制的画布,绘制后像素不会自动成为可操作的 DOM 控件。数据变更时需要重绘,交互需要命中检测,语义与键盘操作还要另外提供。若只是几张能点击的资料卡片,HTML 元素通常更容易维护。
选择依据是画面变化与用户操作。需要选中文字、链接和辅助技术说明的内容应保留文档语义;需要大量自定义绘制时可以评估 Canvas,同时设计等价的可访问操作。不能用视觉截图替代这一责任。
清晰度、尺寸与下载预算分开考虑
CSS 尺寸决定页面里的显示空间,位图或 Canvas 的实际像素尺寸决定细节与部分内存成本。高设备像素比可能需要更大的绘制缓冲区,但不会自动改变 CSS 布局尺寸。像素数量随宽高相乘增长,不能只关注文件压缩后多小。
卡片缩略图按显示用途准备适当尺寸,可用响应式候选让浏览器选择合适资源。先提供固有宽高或比例,避免加载后突然撑开。首屏重要大图不要无条件延迟加载;位于下方的非关键图可以按实际策略延迟。
透明边距、裁剪和主体位置也属于资源质量。文件尺寸正确却主体很小,界面仍难以辨认。检查浅色与深色背景、缩小后的边缘,以及替代文本是否描述信息而非反复念“图片”。装饰资源不应抢占阅读内容。
动画要对应用户操作
卡片悬停反馈可以说明可操作区域,保存后短暂反馈可以确认动作。动画持续时间、距离与触发方式应按用途设置,不为每张静态卡片加入永久运动。移动设备没有相同悬停方式,要提供触摸与键盘也能获得的反馈。
变换和透明度动画常能减少布局工作,但效果还受内容、绘制和合成影响,不能承诺一定流畅。先避免每帧读写布局尺寸,再在真实设备观察。用动画掩盖慢请求也不会让请求变快,加载反馈仍要有明确状态。
尊重减少动画偏好,提供静态或弱运动版本。持续、分散注意力的运动应有暂停或替代路径。减少运动不等于删除所有状态提示,可以保留文字、颜色之外的标记和立即完成的状态更新。
资源生成需要保存来源与边界
使用生成工具制作教学插图时,先写清用途、构图、尺寸和可读性要求,保留提示与版本,以及采用或退回的理由。生成结果可能包含错误文字、畸形结构或与说明不符的符号,需要人工检查,不应当作事实证据。
现成素材也要检查许可、使用范围和来源。不要把别人的截图、品牌人物或故事当作自己的原创资源。公开资源清单可以记录安全的来源说明与许可状态,但不携带真实用户图像、私有提示或账号数据。
在应用中把资源 ID 与版本关联,避免更新图像后旧缓存长期显示不匹配内容。校验格式、实际尺寸和体积,再决定是否进入正式资源库。素材审核和应用访问控制是不同问题,不能因为插图公开可用就开放整个私有目录。
用几何模型检查点击区域
示例把卡片区域表达为左、上、右、下坐标,采用左上包含、右下不包含的半开区间。这样相邻区域可以共享边界而不让同一坐标属于两边。它只处理轴对齐矩形,省略缩放、旋转、层级和浏览器坐标转换。
boxes = {"card": (10, 20, 110, 80)}
def hit(x, y):
return [name for name, (left, top, right, bottom) in boxes.items()
if left <= x < right and top <= y < bottom]
assert hit(10, 20) == ["card"]
assert hit(110, 20) == []
assert hit(5, 5) == []
print(hit(30, 40))
输出是 ['card']。左上角能命中,右边界 x=110 被排除,外部点没有结果。测试 30,40 证明普通内部点被识别。结果并不代表真实用户已经点了卡片,也不能证明键盘和屏幕阅读器能操作它。
真正的 Canvas 点击要把指针坐标转换到绘制坐标,并考虑 CSS 尺寸、设备像素比和变换。多个图形重叠时还要定义谁优先。若直接让 HTML 按钮承担动作,就可以使用浏览器原生交互,不需要复制这套几何逻辑。
加载失败也应保留内容与操作
资源加载失败时保持卡片标题、描述和主要操作可见,提供稳定的占位区域。不要无限重试同一不存在资源,错误反馈要能区分临时网络问题和无效资源。占位也不应让用户误认为真实图已经显示。
交互依赖图像内容时,为失败与减少运动提供同等任务路径,例如文字列表与标准按钮。只保留一个不能操作的空画布,会让关键功能随资源失败消失。设计素材与设计状态应一起完成。
检查资源时也要记录实际格式,文件扩展名可能与内容不一致。
练习:交付一个可核查的资源方案
为三张教学卡片选择位图、SVG 或 HTML 图形,解释用途与取舍。记录显示尺寸、像素尺寸、来源、许可和失败替代。为一项操作定义动画与减少运动版本,写出命中坐标的边界规则。
验收要求:图片失败不阻断阅读;窄屏与高像素比显示清楚;键盘可完成同一动作;减少运动下仍能看到状态改变;离线命中检查覆盖内部、外部和共享边界。真实性能结论需要实际设备与测量记录,资源模型与代码断言不能提供未测的帧率。
资料来源与延伸阅读
资料核验:2026-11-10。本文为原创工程讲解,教学示例不代表线上实测。