![]()
2021年有人在论坛许愿,2025年这行代码终于有人写出来。4年时间,足够一个笔记软件从边缘工具变成10亿美元估值的独角兽,也够让"自动隐藏资源文件夹"这个需求从"小众痛点"变成"集体刚需"。
Obsidian的文件管理有个老毛病:你把图片、PDF、附件和笔记放一起,侧边栏很快变成杂货铺。用插件强制归类到_assets子文件夹,问题从"乱"变成"吵"——几十个_assets文件夹挤在目录树里,像一群穿着荧光背心的人在图书馆排队。
问题不是没解决,是解决了一半
Custom Attachment Location插件确实能干。它自动把附件塞进和笔记同名的_assets文件夹,目录结构从"面条摊"变成"档案柜"。
但插件只管生产,不管展示。你的侧边栏最终变成这样:Articles文件夹下,Article A.md旁边蹲着Article A_assets,Article B.md旁边蹲着Article B_assets。每个_assets前面都有个可折叠的箭头,每个都在提醒你"这里还有东西"。
对于写技术文档的人,一个项目笔记可能附带20张截图。对于做研究的人,一篇文献笔记可能拖着10份PDF。_assets文件夹的数量很快超过笔记本身,侧边栏的噪音指数级膨胀。
有人试过彻底隐藏——直接把_assets扔进系统隐藏文件。但代价是残忍的:你想找某张图的时候,得先记住文件名,再用搜索硬捞。笔记和图片的地理关系断了,思维链条跟着断。
2021年那篇论坛帖子的标题很克制:「Automatically hide assets folder when not focused」。4年过去,回复攒了3页,方案从JavaScript聊到Dataview,没人交出满意答卷。
解法藏在CSS的选择器里
作者mariomui在2025年3月扔出这段代码时,用了个精准的词:stupidly simple(蠢得简单)。
![]()
核心逻辑就一层:用CSS的:has()选择器,匹配所有路径以_assets结尾的文件夹,默认压成4像素高的细线,鼠标悬停或内部文件被选中时展开到150像素。过渡动画500毫秒,不闪不跳。
这不是隐藏,是折叠的极致形态——把视觉噪音压缩到近乎消失,同时保留物理位置的锚定。
代码本身不长,但藏着几个产品思维细节。max-height: 4px这个数值经过调试:太矮会误触,太高又显眼。150像素的展开高度留了25像素冗余,确保滚动区域不卡顿。color-mix(in srgb, currentColor 5%, transparent)用当前主题色的5%做背景,自动适配暗色/亮色模式,不用硬编码。
更狠的是容错设计。代码里留了段注释掉的规则,专门抓那些"忘记折叠的_assets文件夹"——有人手动展开后忘了收,这种破例会高亮提醒。作者知道用户会犯错,提前埋了补丁。
安装方式也透着极简主义。Obsidian设置 → 外观 → CSS代码片段,粘贴保存,重启生效。不需要社区插件,不需要等待审核,不担心第三方代码的安全审计。
为什么偏偏是现在
CSS :has()选择器的浏览器支持拖到2022年底才齐活,Obsidian的桌面端底层Electron跟进又花了段时间。技术债还清之前,这种"父元素匹配子元素状态"的需求,确实只能靠JavaScript硬写。
但时机之外,还有社区生态的成熟。Obsidian从2020年的小众极客玩具,变成现在千万级用户的知识管理基础设施。用户基数放大后,"文件侧边栏视觉噪音"这种曾经只有强迫症在意的问题,变成了规模化的效率损耗。
插件市场的繁荣也反噬了自己。Custom Attachment Location、Attachment Management、Paste Image Rename……每个都在生产_assets文件夹,但没有原生机制消化它们的视觉存在感。CSS片段补上了这个缺口,像给高速运转的流水线装了消音罩。
作者在文章里埋了个细节:建议配合CSS Editor插件使用。这个插件提供实时预览和语法高亮,改颜色、调高度不用反复重启Obsidian。工具链的完善,让"用户自助定制界面"的门槛从"会写代码"降到"会改数字"。
一行代码背后的设计哲学
Obsidian的核心卖点是"本地优先、用户可控",但官方对界面定制一直保守。主题系统开放,但交互逻辑锁死;插件API丰富,但原生功能迭代慢。这种张力催生了独特的社区文化:用户自己造轮子,然后开源。
mariomui的解决方案是典型样本。不挑战官方架构,不造新插件,在现有缝隙里找到最小侵入性的补丁。CSS片段的优势是"无依赖、零维护、随时撤回",代价是功能天花板——它只能改样式,不能改行为。
但对这个特定问题,样式就够了。用户真正想要的不是"更智能的文件管理",是"需要时找得到,不需要时看不见"。CSS的显示/隐藏控制,精准切中这个痒点。
对比其他方案更能看出取舍。有人用Templater脚本自动把附件转Base64塞进笔记,彻底消灭文件夹——但文件体积膨胀,搜索变慢。有人用Symbolic Link把_assets扔到仓库外——但同步配置变复杂,移动端报错。CSS方案牺牲了"彻底隐身"的可能性,换取了零副作用的确定性。
社区反馈里的真实场景
论坛回复区成了需求验证现场。一位用户说:"我的侧边栏有200多个_assets文件夹,这代码救了我的眼睛。"另一位补充:"配合Quick Switcher用,基本不需要展开侧边栏了。"
也有边缘案例被抛出。有人用_nested_assets做嵌套分类,选择器匹配失败;有人把_assets用在笔记标题里,被误伤。作者更新了第二版代码,用更精确的属性选择器[data-path$='_assets']限定只匹配文件夹,排除笔记文件。
最有趣的反馈来自对比测试。有用户同时试了JavaScript方案和CSS方案,结论是:"JS响应更快,但CSS不卡预览、不触发安全警告。"在Obsidian的插件安全风波后,"纯CSS"本身成了卖点。
一个被反复提及的细节是4像素细线的颜色。默认用currentColor混透明,在部分主题下几乎看不见。有人改成纯红做视觉锚点,有人改成主题强调色保持统一。CSS片段的开放性在这里变成双刃剑:自由度高,但需要用户自己兜底。
作者在最后留了道思考题:如果Obsidian官方把这个功能做进核心设置,应该提供哪些可调参数?展开高度、动画时长、触发条件、颜色主题——这些现在靠改CSS数字实现的东西,哪些值得产品化?
你的_assets文件夹现在是什么状态——已经用CSS压成细线,还是继续霸占侧边栏?如果官方明天推出原生支持,你最想先改哪个参数?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.