如何默认折叠文档属性/YAML/Properties/Metadata/Front Matter

20231204_233032

用这个 CSS 想添加文档属性不是很容易。在 .metadata-properties 未展开时直接点添加按钮是添加不上的。

想修改属性类型,或者任何右键目录操作,都会被判定脱离了 :hover。

20231204_234714

@rbber66 @尘沙 看看这种方式行吗:

我找到办法了,用这个样式:

.metadata-container:not(:hover) .metadata-content, [data-type=markdown] .metadata-container:not(:hover) .metadata-property, [data-type=markdown] .metadata-container:not(:hover) .metadata-add-button.text-icon-button {
  display: none;
}
1 个赞

#12 有一样的问题。

20240109_172238

恩 那这样的话,应该就不是样式能解决的了,操作的时候,用键盘上下选择,先凑合一下 :rofl:

看看这种方式行吗:

1 个赞

非常需要折叠的效果。目前官方仅有显示、隐藏、源码三种模式。

或许找一个能提供hook的插件, 打开md文档之后自动执行折叠命令?

我用模拟点击实现的(安装RunJS插件,把代码添加到RunJS设置里的Auto start中)

```js RunJS="onLoad"

// 自动折叠文档属性
this.app.workspace.onLayoutReady(() => {
    let stTimer;
	this.app.workspace.on('active-leaf-change', async (activeLeaf) => {
		// 定时防止无效触发,只取最后一个触发
		if(stTimer) clearTimeout(stTimer)
		stTimer = setTimeout(() => {
            var activeLeaf = ".workspace-split.mod-root .workspace-tabs.mod-active .workspace-leaf.mod-active ";
            var mc=document.querySelector(activeLeaf+".metadata-container:not(.is-collapsed)");
            if(mc && mc.firstChild) mc.firstChild.click()
        }, 42)
    })
})
```

解释下代码,为什么用active-leaf-change事件,因为file-open事件按ctrl+点击打开不触发,而打开文件同样会触发active-leaf-change事件,但该事件会被触发多次,通过延迟,过滤掉非目标触发;为什么用firstChild,而不直接用css选择器取到child,因为上面代码是之前回答一个用户的问题时写的,直接拿来加上firstChild,懒得改了 :grinning: