我正在使用lit-element处理自定义元素。我想制作自己的自定义表格元素,但是有一些问题。
第一的。它似乎浏览器允许tr
,td
标签只table
。
<!-- in html -->
<my-table>
<tr>
<td>A</td>
<td>B</td>
</tr>
</my-table>
<!-- chrome rendered -->
<my-table> A B </my-table>
第二。它可以用CSS模仿,但CSS不能实现colspan。
<my-table> <!-- display: table -->
<my-tr> <!-- display: table-row -->
<my-td>A</my-td> <!-- display: table-cell -->
<my-td colspan="3">B</my-td> <!-- There is no way to implement colspan -->
</my-tr>
</my-table>
第三。我尝试在主机上使用“显示:内容”进行样式设置。这似乎是工作,但主机没有像clientHeight
.
class MyTd extends LitElement {
render() {
return html`
<style>
:host { display: content; }
td {
all: inherit; /* It make to inherit host's style */
display: table-cell;
}
</style>
<td>
${html`<slot></slot>`} // I don't know why it work.
</td>
`;
}
}
// other js file.
const td = document.querySelector('my-td');
td.clientHeight; // 0
我可以覆盖clientHeight
和其他东西(offsetHeight
,getBoundingClientRect
...),但我不知道这是正确的,这是唯一的方法。
有没有其他方法可以创建自定义表,或者我的想法有问题?