有点奇怪的列表项逻辑

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

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

list.gif

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

这是一个专门的特性吗?

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

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

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

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

  • 思源笔记

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

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

    19148 引用 • 72002 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • @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 的回帖

请输入回帖内容 ...

推荐标签 标签

  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    492 引用 • 1384 回帖 • 363 关注
  • 导航

    各种网址链接、内容导航。

    37 引用 • 168 回帖
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖 • 8 关注
  • 笔记

    好记性不如烂笔头。

    306 引用 • 780 回帖
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 740 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    27 引用 • 66 回帖
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 51 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 60 回帖 • 468 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 688 关注
  • HHKB

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

    5 引用 • 74 回帖 • 415 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 466 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1398 回帖 • 2 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 184 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 1 关注
  • abitmean

    有点意思就行了

    24 关注
  • 电影

    这是一个不能说的秘密。

    120 引用 • 597 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 3 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖