在有序列表中,应将标签直接嵌套在内,而非给添加href或让包裹;编号不可单独链接,整行点击需用js触发内部跳转;target="_blank"须配rel="noopener"防安全风险。

有序列表项里直接套 @#@#@#@#@#@#@#@#@#@0<li>@#@#@#@#@#@#@#@#@#@1</li>
<ol href="..."></ol> 或 <ol>@#@#@#@#@#@#@#@#@#@2</ol> —— 后者违反 HTML 内容模型,<a></a> 不能作为 <li> 的父级::before 生成),要确认 <a></a> 不覆盖或遮挡编号区域,必要时加 padding-left 或调整 display
想让整行(含编号)都可点击?得用 JavaScript 模拟
原生 HTML 中,编号本身不是独立节点,无法单独绑定事件或加链接。所谓“整行点击”,实际是让 <li> 区域响应点击,并跳转到对应地址。
做法是:保留 <li> 内部的 <a></a> 用于 SEO 和基础可访问性,再用 JS 给 <li> 添加 click 事件,触发 location.href 或 a.click()。
- 必须确保
<a></a>仍存在,否则屏幕阅读器无法识别链接意图 - 避免同时给
<li>和内部<a></a>都加click,否则可能触发两次跳转 - 简单实现:
li.addEventListener('click', () => li.querySelector('a').click())
target="_blank" 在有序列表里要谨慎用
在 <a></a> 上加 target="_blank" 本身没问题,但会带来两个隐性问题:
- 新窗口打开后,用户容易丢失上下文,尤其当列表是导航章节时,返回原页面需手动操作
- 没加
rel="noopener"会有安全风险:新开页面可通过window.opener访问原页面 DOM,可能被恶意利用 - 如果所有列表项都开新页,建议改用
target="_self"+ 页面内锚点(如href="#chapter2")提升体验
动态生成时,链接地址别拼错路径
服务端模板或前端 JS 渲染有序列表时,href 值常来自变量。最容易踩的坑是相对路径计算错误,尤其是当 HTML 文件不在根目录时。
- 用绝对路径最稳:
href="/docs/chapter1.html"(以/开头) - 避免
href="chapter1.html"这种纯文件名写法——它依赖当前页面 URL 路径,换一个子目录就 404 - 如果是单页应用(SPA),链接可能是
href="#/chapter1",此时需配合路由库处理,不能真跳转
<ol><li><a></a></li></ol>),再用 CSS 控制外观,最后按需用 JS 补充交互——别为了“看起来整行可点”而破坏结构语义。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











