ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Jspreadsheet v4 表格样式定制指南:初始化配置与 getStyle/setStyle 动态操作详解

Jspreadsheet v4 表格样式定制指南:初始化配置与 getStyle/setStyle 动态操作详解 前端UI组件【免费下载链接】ceJspreadsheet is a lightweight JavaScript data grid component for creating interactive data grids with advanced spreadsheet controls.项目地址https://gitcode.com/gh_mirrors/ce/ce点击查看免费下载本篇指南聚焦 JspreadsheetJavaScript 数据网格组件的表格样式Table Style定制如何在初始化阶段通过style配置项为单元格预置 CSS 样式又如何在运行时借助getStyle、setStyle方法以编程方式读取、修改与重置单元格样式。读完本文你将掌握两种风格化路径的完整用法、底层实现原理、历史记录与事件机制并能在真实项目中复现官方示例。一、两种应用样式的路径Jspreadsheet 为表格样式提供了两条互补的操作路径见 官方示例初始化阶段静态配置在创建表格时通过columns配置列类型与宽度同时通过顶层style选项以「单元格坐标 → CSS 字符串」的映射为指定单元格预设样式运行时编程式管理初始化完成后仍可通过工作表示例worksheet instance上的setStyle、getStyle以及resetStyle方法动态读取、修改与清除单元格样式。两条路径都以 CSS 为基础——Jspreadsheet 采用真实 DOM 结构渲染单元格单元格的样式直接作用于底层td元素的style属性因此既支持外部 CSS 覆盖也支持组件内建的程序化样式管理。从源码看初始化配置最终也会落到setStyle在 worksheets.js 中创建流程会读取obj.options.style并调用obj.setStyle(obj.options.style, null, null, 1, 1)应用样式随后将该选项替换为 getterreturn obj.getStyle()使options.style始终能反映当前全部单元格样式。二、初始化时通过 style 配置项预置样式style是一个Recordstring, string类型选项键为单元格坐标如A1值为 CSS 声明字符串如background-color: orange;。在初始化时传入即可让对应单元格立即呈现目标外观html script srchttps://bossanova.uk/jspreadsheet/v4/jspreadsheet.js/script script srchttps://jsuites.net/v5/jsuites.js/script link relstylesheet hrefhttps://bossanova.uk/jspreadsheet/v4/jspreadsheet.css typetext/css / link relstylesheet hrefhttps://jsuites.net/v5/jsuites.css typetext/css / div idspreadsheet/div script let table jspreadsheet(document.getElementById(spreadsheet), { data: [ [US, Cheese, Yes, 2019-02-12], [CA;US;UK, Apples, Yes, 2019-03-01], [CA;BR, Carrots, No, 2018-11-10], [BR, Oranges, Yes, 2019-01-12], ], columns: [ { type: dropdown, title: Product Origin, width: 300, url: /jspreadsheet/countries, // Remote source for your dropdown autocomplete: true, multiple: true }, { type: text, title: Description, width: 200 }, { type: dropdown, title: Stock, width: 100, source: [No,Yes] }, { type: calendar, title: Best before, width: 100 }, ], style: { A1:background-color: orange;, B1:background-color: orange;, }, }); /script /html该示例同时演示了列级配置columns控制列类型与宽度而style选项以单元格为粒度控制外观。A1与B1因此获得橙色背景其余单元格保持默认外观。三、运行时通过 setStyle 动态修改样式setStyle支持两种调用签名其底层实现在 style.js 中统一处理3.1 单属性写法为单个单元格设置单个 CSS 属性table.setStyle(A2, background-color, yellow);第一个参数单元格坐标如A2第二个参数CSS 属性名如background-color、font-weight、color、text-decoration、text-align等第三个参数属性值。3.2 对象批量写法一次为多个单元格批量设置不同样式键为单元格坐标值为 CSS 字符串内部以;分隔解析为多组属性:值table.setStyle({ A3:font-weight: bold; color:red;, B3:background-color: yellow;, C3:text-decoration: underline;, A4:text-align:left; });从源码看style.js对象写法的处理流程是遍历每个键对应的样式字符串按;拆分为样式声明再按:拆分为属性与值逐条调用内部的applyStyle应用到对应单元格的 DOMstyle对象上字符串中的空格会被trim()后处理因此color:red;与color: red;均可正常解析。3.3 历史记录与事件setStyle并非只做简单的 DOM 修改它还会记录撤销/重做历史每次调用会把新旧样式快照通过 setHistory 记录为action: setStyle的历史条目style.js用户可按快捷键撤销样式修改触发onchangestyle事件修改完成后通过dispatch派发onchangestyle事件style.js携带工作表示例与变更对象便于应用层监听样式变化。3.4 与只读单元格及重复赋值的细节applyStyle内部style.js有两个值得注意的行为只读保护默认情况下若目标单元格带有readonly类样式不会被修改传入force第 4 个参数布尔值为true时才能强制修改只读单元格幂等移除当新值与当前值相同且未传force时setStyle会把该属性清空相当于移除该样式可用来实现「切换样式」的交互传forcetrue则不会移除。四、运行时通过 getStyle 读取样式getStyle用于读取单元格样式支持两种粒度对应实现在 style.js// 读取单个单元格的全部样式声明 document.getElementById(getA1Style).onclick () document.getElementById(console).innerHTML table.getStyle(A1); // 读取整张表格所有单元格的样式JSON 对象 document.getElementById(getTableStyle).onclick () document.getElementById(console).innerHTML JSON.stringify(table.getStyle());getStyle(cell)传入单元格坐标如A1返回该单元格元素style属性的完整字符串getStyle(cell, key)额外传入属性名时只返回该 CSS 属性对应的值getStyle()不传参数时遍历整张表格所有数据单元格返回「坐标 → 样式字符串」的对象只有存在样式的单元格才会出现在结果中。读取操作直接来源于 DOM单个单元格读取的是records[j][i].element.style[key]或getAttribute(style)整表读取则遍历全部行与列因此getStyle的结果与页面上实际渲染的样式始终保持一致。五、配套方法 resetStyle 与样式复制除setStyle/getStyle外样式管理还包含两个相关能力resetStyle(cells)将指定单元格对象键的style属性清空再触发一次setStyle以同步历史与事件style.js用于一键还原默认外观复制粘贴保留样式复制粘贴时会记录源单元格样式oldStyle[columnName] obj.getStyle(columnName)见 copyPaste.js粘贴后恢复因此带样式的单元格内容在复制粘贴后仍能保持格式对应测试见 paste.js。六、事件监听onchangestylesetStyle每次生效后都会触发onchangestyle事件回调参数为(instance, changes)其中changes为「单元格坐标 → 新样式字符串」的对象。可在初始化配置中注册监听let table jspreadsheet(document.getElementById(spreadsheet), { data: [ /* ... */ ], onchangestyle: function(instance, changes) { console.log(Style changed:, changes); } });该事件可用于联动其他 UI、将样式变更同步到后端、或与撤销/重做流程配合实现复杂交互。其触发点与历史记录逻辑同处 style.js事件与历史总是同步发生。七、完整可运行示例将官方示例整合为一份可直接运行的 HTML 页面演示「初始化预置样式 → 单属性修改 → 批量修改 → 读取单格样式 → 读取全表样式」的完整链路html script srchttps://bossanova.uk/jspreadsheet/v4/jspreadsheet.js/script script srchttps://jsuites.net/v5/jsuites.js/script link relstylesheet hrefhttps://bossanova.uk/jspreadsheet/v4/jspreadsheet.css typetext/css / link relstylesheet hrefhttps://jsuites.net/v5/jsuites.css typetext/css / div idspreadsheet/div script let table jspreadsheet(document.getElementById(spreadsheet), { data: [ [US, Cheese, Yes, 2019-02-12], [CA;US;UK, Apples, Yes, 2019-03-01], [CA;BR, Carrots, No, 2018-11-10], [BR, Oranges, Yes, 2019-01-12], ], columns: [ { type: dropdown, title: Product Origin, width: 300, url: /jspreadsheet/countries, autocomplete: true, multiple: true }, { type: text, title: Description, width: 200 }, { type: dropdown, title: Stock, width: 100, source: [No,Yes] }, { type: calendar, title: Best before, width: 100 }, ], style: { A1:background-color: orange;, B1:background-color: orange;, }, }); document.getElementById(setYellow).onclick () table.setStyle(A2, background-color, yellow); document.getElementById(setStyle).onclick () table.setStyle({ A3:font-weight: bold; color:red;, B3:background-color: yellow;, C3:text-decoration: underline;, A4:text-align:left; }); document.getElementById(getA1Style).onclick () document.getElementById(console).innerHTML table.getStyle(A1); document.getElementById(getTableStyle).onclick () document.getElementById(console).innerHTML JSON.stringify(table.getStyle()); /script br/ ptextarea idconsole stylewidth:100%;max-width:600px;height:100px;/textarea/p br/ button typebutton idsetYellowSet A2 background/button button typebutton idsetStyleChange A3, B3, C3, A4 style/button button typebutton idgetA1StyleGet A1 style/button button typebutton idgetTableStyleGet the table style/button /html运行后点击各按钮即可看到A1/B1初始化即为橙色背景点击「Set A2 background」将A2背景设为黄色「Change A3, B3, C3, A4 style」批量应用加粗、红色文字、下划线与左对齐「Get A1 style」与「Get the table style」分别输出单格与全表样式。八、扩展阅读样式能力与以下文档模块紧密相关可结合阅读样式 API 完整方法与事件签名docs/jspreadsheet/docs/style.md样式相关事件总览docs/jspreadsheet/docs/events.mdv4 → v5 升级中onchangestyle事件参数的变化docs/jspreadsheet/docs/upgrade-from-v4-to-v5.md表格内嵌编辑器与列类型配置docs/jspreadsheet/v4/examples/column-types.md样式相关源码实现src/utils/style.js、样式在创建流程中的接入点 src/utils/worksheets.js、样式随复制粘贴保留的实现 src/utils/copyPaste.js赞分享前端UI组件【免费下载链接】ceJspreadsheet is a lightweight JavaScript data grid component for creating interactive data grids with advanced spreadsheet controls.项目地址https://gitcode.com/gh_mirrors/ce/ce点击查看免费下载相关推荐Jspreadsheet 表格样式定制指南初始化 style 配置与 setStyle/getStyle 程序化控制Jspreadsheet 表格样式定制指南初始化 style 配置与 setStyle/getStyle 程序化控制 在 Jspreadsheetv3 时代前端UI组件Jspreadsheet (Jexcel) 表格样式定制初始化 style 配置与 getStyle/setStyle 编程式样式管理Jspreadsheet Jexcel 表格样式定制初始化 style 配置与 getStyle / setStyle 编程式样式管理 Jspreadshee前端UI组件Jspreadsheet 单元格样式完全指南初始化配置、编程式 API 与源码原理Jspreadsheet 单元格样式完全指南初始化配置、编程式 API 与源码原理 本指南围绕 Jspreadsheetjspreadsheet ce的单前端UI组件上一篇HowToCook 西红柿豆腐汤羹15 分钟一碗勾芡嫩滑家常汤的做法指南下一篇tldraw SDK 单元与集成测试编写指南Vitest 与 TestEditor 实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表