代码片段:表头固定居中,而其他单元格可以自由手动修改对齐方式

本贴最后更新于 263 天前,其中的信息可能已经斗转星移

找 AI 帮忙改的,不知道是不是最优的方案。


为了实现表头固定居中,而其他单元格可以通过鼠标右键手动修改对齐方式,我们需要结合 CSS 和 JavaScript 来实现。以下是修改后的代码:

CSS 部分

.protyle-wysiwyg .table { font-size: 24px; margin: 0 auto; /* 添加这一行 */ } .protyle-wysiwyg > div.table > div:nth-child(1) > table > thead { text-align: center; } /* 表格表头样式 */ .b3-typography table thead th, .b3-typography table thead td, .protyle-wysiwyg table thead th, .protyle-wysiwyg table thead td { font-weight: 400; background-color: var(--b3-theme-background); text-align: center; /* 确保表头单元格居中对齐 */ } /* 表格宽度自适应 */ .b3-typography table, .protyle-wysiwyg table { width: auto; display: table; margin: 0 auto; /* 添加这一行 */ }

JavaScript 部分

document.addEventListener('contextmenu', function(event) { // 阻止默认的右键菜单 event.preventDefault(); // 检查点击的目标是否是表格单元格 if (event.target.tagName === 'TD' && event.target.closest('.protyle-wysiwyg .table')) { // 提示用户选择对齐方式 const alignOptions = ['left', 'center', 'right']; const align = prompt('请选择对齐方式(输入 left、center 或 right):', 'left'); if (alignOptions.includes(align)) { // 将选择的对齐方式应用到单元格 event.target.style.textAlign = align; } else { alert('无效的对齐方式,请输入 left、center 或 right。'); } } });

解释

  1. CSS 部分:确保表头单元格居中对齐。
  2. JavaScript 部分:监听右键点击事件,当点击目标是表格单元格时,提示用户选择对齐方式(左对齐、居中对齐或右对齐),并将选择的对齐方式应用到单元格。

这样,表头单元格将固定居中对齐,而其他单元格可以通过鼠标右键手动修改对齐方式。

  • 思源笔记

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

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

    24822 引用 • 102100 回帖
  • 分享

    有什么新发现就分享给大家吧!

    247 引用 • 1794 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 文档刷新之后样式会保留吗?

    2 回复
  • xnyshu via macOS

    刚刚试了,可以保留。

    1 回复
  • xnyshu via macOS

    这个 AI 的代码能力不亚于 OpenAI,你们都用过没:

    DeepSeek

    1 回复
  • 之前免费的时候用过,要花钱了我就用回 gpt3.5 了

  • Fighter93 via Android

    我试了核心代码.style.textAlign,样式没保留

    1 回复
  • 计算机小白想请教个类似的问题

    想问个很小白的问题,想问问这个 js 代码应该放在哪个文件夹上(我自己是把 js 代码放在了..\conf\appearance\themes\Savor\theme.js 上),也就是我把他放在了 savor 主题上。然后我放的 js 代码是(css 代码没有展示),然后我自己测试了代码没问题,但是我挂在 savor 主题的 theme.js 上却不大行耶

    document.addEventListener("DOMContentLoaded", function() { var contentDiv = document.getElementById("content"); // 添加 span 的快捷键处理 document.addEventListener("keydown", function(event) { if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.key === "L") { addSpanToSelection(); event.preventDefault(); } }); // 删除 span 的快捷键处理 document.addEventListener("keydown", function(event) { if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.key === "K") { removeSpanFromSelection(); event.preventDefault(); } }); function addSpanToSelection() { var selection = window.getSelection(); var selectedText = selection.toString().trim(); if (selectedText !== "") { var span = document.createElement("span"); span.textContent = selectedText; span.classList.add("highlight"); // 添加高亮样式类,可选 span.setAttribute("data-custom", "your-custom-value"); // 设置自定义属性 var range = selection.getRangeAt(0); range.deleteContents(); range.insertNode(span); } } function removeSpanFromSelection() { var selection = window.getSelection(); var range = selection.getRangeAt(0); var container = range.commonAncestorContainer; // 检查是否选中了 span 元素 if (container.nodeType === 3) { container = container.parentNode; // 如果是文本节点,取其父节点 } if (container.tagName === "SPAN" && container.classList.contains("highlight")) { var textNode = document.createTextNode(container.textContent); container.parentNode.replaceChild(textNode, container); } } });
    1 回复
  • 设置 - 外观 - 代码片段 - JS

    2 回复
  • 啊啊啊啊,我现在才知道可以这样整,以前只知道这样搞 css

  • 多谢多谢大佬

  • xnyshu via macOS

    没保留是什么意思?刷新后没变啊。

    1 回复
  • Fighter93 via Android

    就是没有写进数据中,笔记刷新后,还是居左。

    2 回复
  • xnyshu via macOS

    我刷新后没变。

  • xnyshu via macOS

    你说的应该是数据库表格,确实刷新后回还原。

    我试的是纯表格,改了对齐之后,刷新不会还原。

请输入回帖内容 ...