vue v-html解析标签字符串生成的内容 超出四行就省略,并且显示展开按钮否则不显示展开和收缩按钮
时间: 2024-03-01 12:52:06 浏览: 103
好的,如果您需要在只有超出4行时才显示展开按钮,可以对第3步稍作修改,具体方法如下:
1. 在Vue组件中,定义一个computed属性,用来判断是否需要显示展开按钮,如果HTML内容的高度超出4行,则返回true,否则返回false。
```javascript
export default {
data() {
return {
htmlStr: '<p>这是一段需要渲染的HTML标签字符串</p>'
};
},
computed: {
isNeedExpand() {
const div = document.createElement('div');
div.style.position = 'absolute';
div.style.visibility = 'hidden';
div.style.width = 'auto';
div.style.height = 'auto';
div.style.whiteSpace = 'nowrap';
div.innerHTML = this.htmlStr;
document.body.appendChild(div);
const height = div.offsetHeight;
document.body.removeChild(div);
return height > 4 * 16; // 16px是每行的高度
}
}
};
```
2. 在模板中,使用v-if指令来判断是否需要显示展开按钮。
```html
<div v-html="htmlStr" :class="{ 'expand': isNeedExpand }">
<span v-if="isNeedExpand">...</span>
<button v-if="isNeedExpand && !isExpand" @click="isExpand = true">展开</button>
<button v-if="isExpand" @click="isExpand = false">收起</button>
</div>
```
这样就可以实现只有超出4行时才显示展开按钮的效果了。
阅读全文