网络日志

解决vue中使用v-html解析table没有显示线条

需要渲染出来的html的内容为:

"<table style=\"width: auto;\"><tbody><tr><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">123</th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\"></th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\"></th></tr><tr><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">44</td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\"></td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\"></td></tr></tbody></table><p><br></p><table style=\"width: auto;\"><tbody><tr><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">a</th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">b</th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">c</th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">d</th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">e</th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">f</th><th colSpan=\"1\" rowSpan=\"1\" width=\"auto\">g</th></tr><tr><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">1</td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">2</td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">3</td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">4</td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">5</td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">6</td><td colSpan=\"1\" rowSpan=\"1\" width=\"auto\">7</td></tr></tbody></table>"

最开始使用v-html解析富文本中的table,代码如下:

<div v-html="remarkHtml"></div>

页面渲染展示为下图,table中的实线框没有渲染出来

实线框没有渲染出来的原因是因为v-html是富文本中有啥渲染啥,所以,如果在table中没有设置样式的话,就需要手动添加样式!解决方案:为渲染出来的table设置样式

<div class="html" v-html="remarkHtml"></div>

// css
.html {
    table {
        border-collapse: collapse;
    }
    td, th {
        border: 1px solid #ccc;
        min-width: 50px;
        height: 20px;
    }
    th {
        background-color: #f1f1f1;
    }
}

这样就可以成功渲染出来table表格