Vue使用v-html渲染数据时修改样式

通过在网上查阅资料主要有三种解决方法:

1. 定义一个class在<style>标签中使用深度选择器 >>>指向想要改变样式的元素,这里以改变图片样式为例,测试可用。(也可以尝试使用 width:100% !important)

<div class="content" v-html="item.content"></div>

<style scoped>
.content >>> img {
    width: 100%;
}
</style>

2. 使用 updated() 生命周期钩子函数,js动态配置样式,代码如下:

update() {
    // 主要是通过操作DOM和使用Vue生命周期钩子函数实现
    let obj = document.getElementById('content');
    let imgs = obj.getElementsByTagName('img');

    for (let i =0; i < imgs.length; i++) {
        imgs[i].style.width = '100%';
        imgs[i].style.height = '100%';
    }
}

3. 去掉 style中的scoped

       在vue组件中,我们写style时,为了防止页面样式冲突,在每个组件中会加上scoped属性。经测试,去掉该属性即可渲染样式成功。但是在组件过多或者项目过大时,经常会出现页面样式冲突,因此该方法不建议使用

       tips: scoped属性导致css仅对当前组件生效,而html绑定渲染出的内容可以理解为是子组件的内容,一般情况下子组件不会被加上对应的属性,所以不会应用带有scoped的css。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值