ProseMirror表格合并单元格后,如何让相邻单元格保持边框一致?
最近在用ProseMirror实现带边框的表格功能,但发现当调用mergeCell合并单元格后,相邻未合并的单元格边框会断开,看起来像被“吃掉”了一样。我试过在CSS里给td加border-collapse: collapse,但合并后的跨列单元格还是和旁边格子的边框对不上。
之前按照文档用schema.nodes.table创建表格,合并操作用的是cells.forEach(cell => selection.CellSelection.createCellRange(cell))这种选中方式。但合并后的td元素在DOM里显示了正确的colspan,边框样式却变成实线和虚线交替了。
有没有遇到过类似问题?是不是需要自定义table节点的render函数来处理边框?或者合并时要额外设置某个属性?
关键点:
1.
border-collapse: collapse只是基础,合并单元格后需要手动调整样式。2. 合并时通过
colspan和rowspan判断是否是合并单元格,然后强制设置style.border。3. 因为 ProseMirror 的 DOM 更新是异步的,所以需要用
setTimeout确保样式在正确时机应用。这样就能保证合并单元格和普通单元格的边框一致了。累死了,这问题折腾人啊...