如何在Racket中为生成的HTML表格添加边框
解决方案
Racket的S表达式转HTML的规则中,标签属性需要单独放在标签名后的第一个子列表中,属性以(属性名 属性值字符串)的格式定义:
- 基础边框实现(使用HTML原生border属性)
(list 'table '((border "1")) (list 'tr (list 'th "Key") (list 'th "Value")) (list 'tr (list 'td "A") (list 'td "Blue")) (list 'tr (list 'td "B") (list 'td "Gold")))
- 自定义样式边框实现(可调整边框样式、颜色、粗细)
如果需要实线黑色边框且避免双层边框,使用style属性定义样式,同时给单元格也添加边框:
(list 'table '((style "border: 1px solid black; border-collapse: collapse;")) (list 'tr (list 'th '((style "border: 1px solid black; padding: 4px;")) "Key") (list 'th '((style "border: 1px solid black; padding: 4px;")) "Value")) (list 'tr (list 'td '((style "border: 1px solid black; padding: 4px;")) "A") (list 'td '((style "border: 1px solid black; padding: 4px;")) "Blue")) (list 'tr (list 'td '((style "border: 1px solid black; padding: 4px;")) "B") (list 'td '((style "border: 1px solid black; padding: 4px;")) "Gold")))
错误原因说明
你之前的写法没有将border相关属性放到专门的属性列表中,而是直接和标签子元素平级放置,Racket的HTML生成逻辑无法识别这类内容为标签属性,因此不会生效。
内容的提问来源于stack exchange,提问作者thatOneGuy
相关产品推荐
相关产品推荐

