有点奇怪的列表项逻辑

本贴最后更新于 591 天前,其中的信息可能已经沧海桑田

我在无意中发现了这个情况。如果通过连续按回车的方式来创建列表项的话,它们列表项会紧密地排列在一起,它们在逻辑上也是一个整体。

如果在下面的新的一行上创建一个列表项的话,就会发现它跟上述的列表项不会紧密地排列在一起,在逻辑上,就已经是两个不同的列表了。

list.gif

不只是无序列表,有序列表和任务列表都是这样。

这是一个专门的特性吗?

首先,我认为这一点可能容易让普通用户感到困惑,容易第一时间疑问为什么它们之间会有那么大的距离,而且应该还不太可能马上就搞清楚这其中的逻辑吧。

其次,我觉得如果用户会在列表的紧跟着的下一行创建一个新的列表项的话,那么往往就是想要接上上面的列表吧。如果我想要在一个列表的下面再创建一个列表的话,我会下意识地先加一段说明文字或者手动多空一行。

用户指南中应该也没有这个说明。

我个人还是觉得不做这种区分比较好,用户如此就不会被弄混。又或者在用户指南中详细地讲述这个区分。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28454 引用 • 119817 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • @88250 我翻了一下用户指南,好像确实没有详细说明列表块和列表项块的区别和用法

    太简略了:(我觉得至少要说明一下这两种块的包含关系)

    image.png

    1 回复
  • 这是一个专门的特性吗?

    因为有两种块:列表块 和 列表项块 ,列表块之间隔得比较远,列表项块之间隔得比较近

    1 回复
  • syjack 1 赞同
    作者

    我知道这点,但我也认为这很容易让用户感到奇怪。因为其他的笔记软件和文档软件应该都不是这样吧,因为那样更符合逻辑。所以 Siyuan 的用户还要专门理清这个区分,有点费劲。

    1 回复
  • 好像是 Markdown 区分了这个?我没什么印象了

    1 回复
  • 有空的话麻烦 PR 补充,谢谢。

    1 回复
  • syjack
    作者

    不知道具体的 Markdown 规范,但大家一般也是靠空行区分不同的列表吧。

  • Imuvux 1 1 赞同

    个人理解这就是思源里 Markdown 的列表实现方法:

    1. 构造列表块(三个横叹号的块标);
    2. 在列表块中构造列表项(一个横叹号的块标);
    3. 列表块只能容纳列表项,而列表项作为容器可以容纳段落等各种内容,同层次列表项内容对齐;
    4. 列表项内的列表块就是该项的子层列表,子列表项的层级关系为:本层列表块/本层列表项/子层列表块/子层列表项,由此实现缩进;
    5. 不同列表块的列表项看上去在同一层次,但实际上分属于不同列表;
    6. 不同列表块可以组成超级块。

    确实不太直观。

    1 回复
  • syjack
    作者

    这是思源中特别的逻辑,如果习惯并弄懂了还好。但如果没弄懂,就很麻烦,会怀疑是不是 bug。

    一般情况下,大家在一个列表下面紧跟着创建一个新的列表项不就想要接着上面的列表吗?结果,它却成为了一个新的列表。

    如果不想这样做,就只能把光标移到最后的一个列表项的后面按回车,这样才能创建一个子列表项,假如用户知道这个办法的话。。。

    1 回复
  • Imuvux 1

    参考 这个 ,应该是 Markdown 原生特性。思源不同列表不好区分显示是因为它是所见即所得编辑,直接复制 Markdown 源码就能看出来不同列表是用空行区分的。不过可以拖动列表项的块标将其挪到目标列表块里。

    1 回复
  • syjack
    作者

    不过可以拖动列表项的块标将其挪到目标列表块里。

    我当时感到疑惑的时候就尝试拖动了,但发现无法直接拖动另一个列表项到目标的列表块中成为我想要的那个“同层级列表项”,它只能先成为“次级列表项”,然后我再取消缩放,从而让它成为“同层级列表项”。这个步骤有点麻烦,所以我就更想知道不同列表块的区分设计是不是一个专门的特性。

    说得有点绕,不知道你能不能理解。

    1 回复
  • 只要你理解了「列表块只能包含列表项块」这个逻辑,就知道什么情况应该拖动哪个块标了

    认真看这个是怎么拖动的:

    2 回复
  • syjack
    作者

    不得不说的确复杂,光是我在打字用词上就要注意列表块和列表项。我上一个给别人的回复中,没有说清楚。当列表只有一个列表项的时候,它就只有列表块的标志,没有列表项块的标志,此时是没有办法直接拖拽完成吧?

    1 回复
  • syjack
    作者

    当我一顿随意的拖拽操作(也许还包括了取消缩进行为,我忘了)后,发现列表项们的块标让我眼花缭乱,有的只有列表块的块标。这时候就不能理所当然地认为它们都是那样的“列表项”,从而进行随意地拖拽,只能仔细留意它们的块标再来进行拖拽操作。

    list2.gif

  • 当列表只有一个列表项的时候

    这个时候就没必要多选了再拖块标了,直接拖前面的圆点/序号/方框:

    image.png

    @syjack 看到这条回帖了吗?
    JeffreyChen
    看到了,谢谢分享,原来还能这样的操作,这也是一种区分。理解起来有些费劲呀,针对性操作比较多。
    syjack
  • hihaojie

    列表块 只有单行内容时,仍然显示 列表项块 的图标,会更直观些,有助于用户理解。之前有该功能,后来经过讨论取消显示了 😓

    前两天我对该需求发的帖 能否为列表项中的首个段落块添加段落块标识? - shuojie 的回帖

请输入回帖内容 ...

推荐标签 标签

  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    173 引用 • 1559 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    561 引用 • 677 回帖
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 2 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 235 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 53 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    599 引用 • 3541 回帖
  • sts
    2 引用 • 2 回帖 • 260 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 7 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 686 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    9 引用 • 75 回帖
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    95 引用 • 122 回帖 • 632 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 548 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 3 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 17 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    215 引用 • 358 回帖
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 9 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 376 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 663 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 349 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 428 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 545 关注