有点奇怪的列表项逻辑

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

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

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

list.gif

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

这是一个专门的特性吗?

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

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

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

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

  • 思源笔记

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

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

    24881 引用 • 102392 回帖

相关帖子

欢迎来到这里!

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

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

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

    image.png

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

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

    1 回复
  • syjack 1 赞同
    作者

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

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

    1 回复
  • 88250

    有空的话麻烦 PR 补充,谢谢。

    1 回复
  • syjack
    作者

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

  • Imuvux 1 1 赞同 via Android

    个人理解这就是思源里 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 via Android

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

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

请输入回帖内容 ...

推荐标签 标签

  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 1 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 758 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 46 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    99 引用 • 367 回帖 • 1 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 2 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 548 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    183 引用 • 1011 回帖 • 1 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 642 关注
  • Flume

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

    9 引用 • 6 回帖 • 653 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 176 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 928 回帖
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    159 引用 • 305 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 205 关注
  • Shell

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

    124 引用 • 74 回帖 • 2 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 5 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    31 引用 • 97 回帖
  • CodeMirror
    1 引用 • 2 回帖 • 158 关注
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 542 关注
  • 小说

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

    31 引用 • 108 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 176 关注
  • Access
    1 引用 • 3 回帖 • 3 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖 • 3 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 3 关注
  • golang

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

    498 引用 • 1395 回帖 • 254 关注
  • 程序员

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

    586 引用 • 3538 回帖
  • Excel
    31 引用 • 28 回帖 • 1 关注