必须用。更新日志是严格倒序的时间事件流,语义正确且适配“最新在前”;日期须用标记;版本号应作为补充信息置于日期后、内容前,避免喧宾夺主。

时间轴结构用 <ol></ol> 还是 <ul></ul>?
必须用 <ol></ol>。更新日志本质是严格按时间倒序排列的有序事件流,语义上属于“有序列表”,<ol></ol> 支持 reversed 属性,能天然适配“最新在前”的常见需求;而 <ul></ul> 无序,会丢失时间先后逻辑,也影响屏幕阅读器对顺序的理解。
常见错误:用 <div> 堆砌、靠 CSS 模拟时间轴——可访问性差,打印或禁用 CSS 后完全不可读。<ul>
<li>推荐写法:<code><ol reversed></ol>(最新条目自动排第一,无需手动调整 DOM 顺序)
reversed 的老旧环境(如 IE),改用 <ol></ol> + 手动倒序 HTML 结构,再用 CSS 控制视觉顺序(不推荐,维护成本高)<li> 包裹,内部结构保持扁平,避免嵌套多层 <div>
<h3>日期怎么标记才既语义正确又方便机器解析?</h3>
<p>用 <code><time></time> 标签包裹日期,并设 datetime 属性为 ISO 8601 格式(如 2024-05-20 或 2024-05-20T14:30)。这样既满足 HTML5 语义规范,又能让搜索引擎、日历工具或自动化脚本准确提取时间点。
常见错误:只写中文日期“2024年5月20日”或“5/20/2024”,没有 <time></time> 和 datetime——机器无法识别,也无法做时间计算或排序。
-
datetime值必须不含中文、空格、斜杠分隔符,严格用YYYY-MM-DD或完整带时分的格式 - 显示文本可以是“2024-05-20”“5月20日”甚至“昨天”,但
datetime属性值不能跟着变 - 不要用
<span></span>+data-*属性替代<time></time>——失去原生语义和浏览器默认行为(如悬停显示本地化时间)
更新条目里要不要加版本号?怎么加才不冗余?
要加,但别重复写“v1.2.0”“v1.2.1”这种纯数字——用户更关心“改了什么”,不是“编了几个号”。版本号应作为补充信息,附在日期后、内容前,用 <strong></strong> 或 <small></small> 区分层级,避免喧宾夺主。
常见错误:每个条目开头都写大号 <h4>v1.2.0</h4>,导致结构混乱、SEO 权重分散;或把版本号塞进 datetime,破坏时间语义。
- 推荐位置:
<time datetime="2024-05-20">2024-05-20</time><strong>v1.2.0</strong>:修复登录页表单校验失效问题 - 如果某次发布含多个关联变更,可用一个
<li>包住多个<p></p>,共用同一日期和版本号 - 纯内部迭代(如 CI 自动打 tag)不对外发布功能,就别写进用户可见的日志里
响应式时间轴在小屏上怎么避免文字挤成一团?
关键不是“缩放字体”,而是重构信息密度。移动端优先隐藏次要字段(如精确到秒的时间、冗长的版本说明),保留日期+核心变更描述;用 CSS 的 flex-direction: column 或 grid 控制垂直堆叠,而非强行维持桌面端的左右布局。
常见错误:给时间轴加 overflow-x: auto 让用户左右滑动——体验割裂,且多数人根本意识不到要滑动。
- 用媒体查询在
max-width: 768px下取消<time></time>的display: inline-block,让它独占一行 - 移除所有固定宽度(如
width: 200px)、white-space: nowrap等阻碍换行的样式 - 避免在
<li>内使用绝对定位或浮动——它们在小屏下极易错位或消失
真正难的不是画出一根线或排好几段文字,而是让每条记录的「时间」「版本」「变更内容」三者之间不互相绑架——日期必须可被机器提取,版本不能干扰阅读节奏,内容描述得足够短又能说清影响范围。这三件事只要有一件没对齐,时间轴就从工具变成装饰。











