F1.13.4inline reading exception设计
分离并非绝对,行内操作(如划词)需要例外设计
别名: 划词 · text selection menu · 行内例外
概念解释
把分享、目录请出正文柱之后,划词查义、高亮、批注仍然必须发生在被划的那几个字上。把「复制」收到底栏,人划完还要带着选择去找工具,选择一丢,对象就没了。行内例外承认:当作用对象就是这段文字本身,操作要回到柱里,贴着选区。分离是默认,不是禁令。
系统的选择气泡、电子书的划线菜单、代码编辑器的灯标动作,都是这条例外在工作。它们不是把 CTA 塞回段落,是把针对这段选区的命令临时挂在选区旁边。
机制
划词的对象是一次短暂的、位置由用户指定的范围。范围没有另一处可以邻近的实体——它就是这些字。命令若离开选区,映射要靠记忆维持「我刚划的是哪几个字」,而选择状态在滚动、失焦、点到别处时极易被清掉。所以例外的几何是:菜单从选区长出,不挡住选区本身,选区一取消菜单就走。它占用阅读柱是有期限的,期限等于这段选择的寿命。
例外被滥用的方式是:划一下就弹出与这段文字无关的分享、关注、打开 App。那是借例外把混入阅读流重新请回来。
边界
没有选择范围的操作(对整篇文章分享、改字号)不享受例外,仍走边缘或按需工具条。触屏划词的手柄和菜单本身会挡上下行,这是已知代价,菜单应优先开在选区上方或下方的空行,而不是盖在选区上。只读预览如果禁止选择,例外不存在,不要为了「万一要划词」预留一排常驻行内按钮。屏幕阅读器的划词是转子或菜单里的「选择」,几何例外变成焦点例外:命令跟焦点走,不跟像素走。
怎么落地
- 划词后出现的命令只保留针对这段文字的:复制、查词、高亮、批注、朗读。把关注作者、打开 App 拿出去。
- 菜单贴着选区,优先翻到不挡选区的一侧;选择取消或滚动开始就关掉。
- 不要因为有划词例外,就在每段末预埋一排操作。例外是选区在场时才出现的层。
- 验证:划一个词,看菜单是不是只含对该词的命令、选区是否仍可见。再点选区外,菜单应消失且正文柱恢复干净。划词却弹出与该词无关的转化,例外就被用破了。