vue动态插入内容 v-html 的样式无效解决方法

在Vue项目中遇到动态插入的HTML内容样式无法生效的问题。通过document.createElement创建的DOM元素不受scoped样式影响。解决方案是使用深度作用选择器>>>,在CSS中添加>>>.element来正确应用样式。这样可以确保动态生成的div元素及其子元素应用到预期的样式,如宽度、高度、阴影和边框等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue v-html 动态内容样式无效解决方法

今天项目遇到一个通过document 插入的一段html标签的样式不起作用,代码如下:

for(...){
	var element = document.createElement( 'div' );
	element.className = 'element';
	element.style.backgroundColor = 'rgba(0,127,127,' + ( Math.random() * 0.5 + 0.25 ) + ')';
	var img = document.createElement('img');
	img.src = this.tableSum[ i ].image;
	element.appendChild( img );
}

//style样式
.element {
	width: 130px;
	height: 130px;
	box-shadow: 0px 0px 12px rgba(0,255,255,0.5);
	border: 1px solid rgba(127,255,255,0.25);
	font-family: Helvetica, sans-serif;
	text-align: center;
	line-height: normal;
	cursor: default;
}

样式是不生效的!

解决方法:
通过 v-html 创建的 DOM 内容不受 scoped 样式影响,但是可以通过深度作用选择器来为他们设置样式。前面加 ‘>>>’,就完美解决了

>>>.element {
				width: 130px;
				height: 130px;
				box-shadow: 0px 0px 12px rgba(0,255,255,0.5);
				border: 1px solid rgba(127,255,255,0.25);
				font-family: Helvetica, sans-serif;
				text-align: center;
				line-height: normal;
				cursor: default;
			}

仅笔记,便查阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值