-
求代码片段 折叠的代码块仍然显示属性的命名和别名等信息
2024-08-28 22:42之前解释过,命名等不能超过父容器范围,top:-16px 超出父容器了,自然隐藏了。
重合了有啥影响吗?右侧操作按钮是你移动上去才显示,平时使用时一般不会鼠标一直留在操作按钮上吧。
如果纠结可以设置 right: 50px;这样就避开按钮了,不过感觉这样还不如重合好看。
要想显示在上面你得把这个命名等按钮移到父容器之外,或者重新实现代码隐藏的逻辑,修改起来较为麻烦,如果你有兴趣可以研究研究。
-
“/”敲斜杠后弹出的快捷功能面板中的选项条目能否删除 / 自定义?
2024-08-28 22:16用 css 基本上都可以实现,菜单项就是一个 button 元素,每个 button 的 value 都不同,通过类似下面的 css 都可以隐藏。
.hint--menu button.b3-list-item:is( [data-value='xxxx'], [data-value='yyyy'] ) { display: none; }
-
求助一个样式 CSS
2024-08-28 21:57这个效果也可以实现,就是麻烦了点。
你需要先安装 vscode 插件,然后可以在思源中可以打开源码进行编辑,在源码那里可以自己修改 css 样式。
如果你经常用到这种样式,还可以把这种样式保存为模板,比如特效字体模板,然后需要的时候从模板导入后修改文字即可。
之前还看到过有个叫配色方案的插件,你也可以研究研究,之前我按教程操作不生效,或许是我哪里操作有误,你也可以试试看。
放个效果的大图吧
-
求代码片段 折叠的代码块仍然显示属性的命名和别名等信息
2024-08-28 17:31代码块折叠时不显示命名和别名等,这个应该是思源的一个 bug,原因是折叠时父容器设置了 overflow:hidden;这样的话,命名和别名因为超出了父容器所以,被隐藏了。
最简单的解决办法就是折叠时把命名和别名移动到父容器中。
下面的代码基本上可以满足你的需求。
.protyle-wysiwyg [data-node-id][fold="1"]:not(.li):not([data-type=NodeHeading]){ opacity:1; } .protyle-wysiwyg [data-node-id][fold="1"]:not(.li):not([data-type=NodeHeading]) .protyle-attr { opacity: 1; top: 0px; }
演示
关于备注显示问题,这个有些复杂,虽然直接显示备注内容很简单,但这涉及到打开和关闭文档时要定位元素及修改属性后要刷新备注内容等让它变得麻烦起来。
不过我可以给你一个思路:
首先,显示备注内容,可以在备注元素的后面插入一个元素,用于显示备注内容,它的数据读取自备注元素的 aria-label 属性的内容。
然后,可以参考我之前这个帖子回复中的
observeTabChanged
函数,然后把打开和关闭文档的监听工作放到这个函数里,同时也监听备注元素的属性aria-label
的内容被修改,然后动态修改备注后面的那个结点元素的内容(即刚才提到的放备注内容的元素)。 -
一些关于表格的问题
2024-08-28 14:35-
正如楼上所说,可以使用右键菜单,我这里强调一点,也可以使用快捷键,如 ctrl+alt+L 左移,ctrl+alt+R 右移,右键菜单上可以看到快捷键,其他的自行查看。
-
关于多选加粗等格式化,虽然按住 shift 可以多选,但思源并不支持批量格式化,不过,可以通过 tab 键跳转并使用 ctrl+b 等快捷键,快速加粗等格式化操作。
-
虽然目前表格不支持 list,但可以通过表情去模拟,也不逊色于普通的列表。
-
-
数据库“资源”下的图片如何批量上传到自建图床
2024-08-28 14:05至于具体怎么实现要看你需求了,要想读取数据库的资源,可以通过数据库 id 查询,然后在 content 字段匹配图片链接即可。
比如
SELECT * FROM blocks where type='av' and id ='20240828134324-3jva87c'
也可以直接读取/data/storage/av/xxxx.json 文件,然后匹配图片资源。
-
HTML 块中的超链接点击没有反应
2024-08-28 13:38不是不支持,是思源太狠了,为了禁用 HTML 内的脚本连自己都不放过 😄
在设置里把允许执行 HTML 块内脚本开启就行了。
不过开启这个可能存在安全问题,比如 xss,注入攻击,csrf 等。
-
SQL 求助:在任务列表项写上日期,例如 2024-09-30,到了这天时索引出来
2024-08-28 12:17SELECT * FROM blocks WHERE type = 'i' AND subtype = 't' AND markdown LIKE '%* [ ]%' AND markdown LIKE '%' || date('now') || '%' AND TRIM(fcontent) = TRIM(content);
-
调查:大家觉得这个主题怎么样?
2024-08-28 08:26是的,笔记毕竟还是以内容为主,只要使用起来方便即可,不必过多修饰和花里胡哨。
我修改的初衷,1 是为了方便使用,所以只改了标签页和状态栏等少数几个主要元素,2 是为了和测试空间做区分,不然哪天测试半天发现空间选错了岂不麻烦 😄 。
-
插件开发 | 不要在 onunload 中调用 saveData
2024-08-27 23:24感谢大佬的分享!
那就是说 unload 里不应该写文件,所有的写文件操作都可能被旧文件替换掉。
再进一步,退出时不能写文件,不仅仅在 unload 中。
那这样的话,那些需要退出时才保存的文件就可能有问题了。
另外,如果那些非必须退出时才保存的需求,放到 unload 保存,程序意外崩溃也会导致丢失,应该及时保存。
-
数据库的链接类型列,不管点哪个位置都是打开链接操作,导致一旦填入链接后就没办法编辑
2024-08-27 20:24@zxkmm @JeffreyChen 右键可以编辑,完美解决。
- 只能聚焦到前面的列,然后 tab 过去删了重新写
另外,这个也不用删除重新,tab 过去后不是选中吗?然后按回车,然后鼠标点击下或按下方向键就可以编辑了
-
调查:大家觉得这个主题怎么样?
2024-08-27 14:25大佬牛啊 👍
我觉的整体挺好的,非常棒!
但思源里的主题里特别惊艳的不多,虽然我也设计不出来,但欣赏能力还是有的。
可能是因为搞主题的大多是技术出身吧,同时懂设计和技术的不多,所以难出精品。
-
求大家推荐:关于思源笔记使用教程学习的群?
2024-08-27 11:01思源没有详尽的手把手教程,最详细的就是官方自带手册了。
如果你想看看别人分享的经验,可以尝试在社区里搜索“分享”关键词,然后标签选思源笔记试试。
也可以在搜索引擎中尝试搜索。
不过,建议你可以把你最想了解或关心的方向列举一下,或许有大佬可以分享一些经验或文章给你。
问的太泛泛,往往起不到应有的效果。
大佬们不知道你到底想了解什么,涉及的知识是方方面面的,你让大佬主动给你把方方面面都列举一遍吗?
具体问题往往得到具体的回答,泛泛的问题只会得到泛泛的回答。
-
求代码片段支持 引用点击 - 单击当前页面打开, 滚轮点击新标签页打开
2024-08-27 10:36哦哦,确实是,通过下面的代码片段可解决这个问题。
原理就是监听标签状态被改变,改变后就给它强制改回来。
(()=>{ // 目标节点 const targetNode = document.querySelector('.layout__center'); // 配置观察器 const config = { childList: true, subtree: true, attributes: true, attributeFilter: ['class'] }; // 当观察到变动时执行的回调函数 const callback = function(mutationsList, observer) { for (let mutation of mutationsList) { if (mutation.type === 'childList') { // 当有新的子节点被添加时 mutation.addedNodes.forEach(node => { if (node.nodeType === Node.ELEMENT_NODE && node.matches('li[data-type="tab-header"].item')) { // 监听新添加的节点的 class 属性变化 const classObserver = new MutationObserver((classMutations) => { for (let classMutation of classMutations) { if (classMutation.type === 'attributes' && classMutation.attributeName === 'class') { if (!node.classList.contains('item--unupdate')) { node.classList.add('item--unupdate'); } } } }); classObserver.observe(node, { attributes: true, attributeFilter: ['class'] }); } }); } else if (mutation.type === 'attributes' && mutation.attributeName === 'class') { // 如果是已存在的节点的 class 属性发生了变化 if (mutation.target.matches('li[data-type="tab-header"].item') && !mutation.target.classList.contains('item--unupdate')) { mutation.target.classList.add('item--unupdate'); } } } }; // 创建一个观察器实例并传入回调函数 const observer = new MutationObserver(callback); // 开始观察目标节点 observer.observe(targetNode, config); // 以后可以停止观察 // observer.disconnect(); })();
-
求代码片段 | 默认全屏编辑
2024-08-26 18:53没啥大毛病了,重新打开渲染慢了点,执行全屏时,文档还没渲染完成。
代码已修改,加了 await sleep(100);
根据自己需要,一般延迟 100 毫秒足够了,如果你电脑上有问题的话就再延迟多一些就行了。
-
求代码片段支持 引用点击 - 单击当前页面打开, 滚轮点击新标签页打开
2024-08-26 17:44未修改过的,是指引用链接未修改过吗?
我这里测试一切正常,是否因为自己环境问题影响?比如插件或主题等。
建议在新空间测试,以排除干扰项。