Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >v-html指令渲染出的内容如何添加样式

v-html指令渲染出的内容如何添加样式

作者头像
流眸
发布于 2019-08-12 08:06:42
发布于 2019-08-12 08:06:42
5K00
代码可运行
举报
运行总次数:0
代码可运行
关于v-html

  在vue使用中,指令 v-html渲染页面经常用到,类似于jQuery的$('x').html( )去渲染。通过指令 v-html渲染出来的内容还会带有原来的标签及其样式,如果需要修改或者重设其样式,应该如何去做呢?

采坑

  首先,我在style中用子级选择器去选中并修改样式,经过猛如虎的操作后,并没生效。F12打开Elements调试,发现在style里面样式根本没加载上去,没有class中也没有类名出现。除此之外,渲染非该指令元素时,所有的类名会跟有 [data-v-xxxxxx]的东西。

爬坑
解决方案

现给出3中方案来解决此问题:

  • 去掉style中的 scoped;
  • watch监测数据变化;
  • 深度选择器 >>>
方案1实践

去掉style中的scoped

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

方案2实践

watch监测数据变化

  在 script>exportdefault中,watch属性可监听v-html所绑定值的变化。如果是后台请求的数据,那么可以在watch中监听改数据变化,当数据发生改变驱动视图后,动态绑定一个class来改变子级元素样式。此方法有一定局限性

方案3实践

深度选择器 >>>

  此时,深度选择器的应用则脱颖而出。深度选择器 >>>,可深度改变子级样式。例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
    <div class="test"></div>
</template>

<script>
// ***
</script>

<style scoped>
    .test >>> *{
        width: 100%;
    }
</style>

  如果使用 scss或者 less等css扩展语言,则用 /deep/替代:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style scoped type="text/scss" lang="scss">
    .test{
        /deep/ *{
            width: 100%;
        }
    }
</style>
tips

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 流眸 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
vue的v-html指令使用注意事项
今天说一下Vue开发时使用V-html时候碰到的一些问题,首先我们要明白什么时候使用v-html,当需要渲染的数据包含html片段的时候,比如下面的内容:
挥刀北上
2019/07/19
24.5K0
vue的v-html指令使用注意事项
v-html可能导致的问题
Vue中的v-html指令用以更新元素的innerHTML,其内容按普通HTML插入,不会作为Vue模板进行编译,如果试图使用v-html组合模板,可以重新考虑是否通过使用组件来替代。
WindRunnerMax
2021/07/01
2.6K0
vue2你该知道的一切(上)
Vue知识点众多,这两章记录一下Vue2.x版本的常规使用方法。如果你是一名使用Vue框架开发的前端工程师,那么这两章的内容会让你对Vue的知识点记得更牢固。
kai666666
2024/07/11
1330
Vue.js 2 基础用法
在底层的实现上,Vue将模板编译成虚拟DOM渲染函数。结合响应式系统,Vue能智能计算出最少需要重新渲染多少组件,并把DOM操作次数减到最少。
Cellinlab
2023/05/17
7.3K0
Vue.js 2 基础用法
Vue3 快速入门及巩固基础
Vue 是一款用于构建用户界面的 JavaScript 框架,它基于 HTML,CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效的开发用户界面
很酷的站长
2022/12/04
3.9K0
Vue3 快速入门及巩固基础
Vue组件基础(上)
单页面应用程序(英文名:Single Page Application)简称SPA,顾名思义,指的是一个web网站中只有唯一的一个HTML页面,所有的功能和交互都是在这唯一的一个页面内完成。
岳泽以
2022/10/26
8290
Vue组件基础(上)
vue v-html指令
v-html 指令可以用于任何元素,它会将元素的内容替换为绑定的数据,并解析其中的 HTML 标签。用法如下:
堕落飞鸟
2023/05/21
1.5K0
Vue3的花样样式还不会?看看老前端是怎么玩儿的~
在 Vue2 组件中,设置一个全局样式,我们通常是新建一个 <style> 标签,如:
淼学派对
2023/10/14
5030
Vue3的花样样式还不会?看看老前端是怎么玩儿的~
一、Vue2笔记--基础篇--15-Vue内置指令v-text、v-html、v-cloak、v-once、v-pre
1.作用:向其所在的节点中渲染文本内容。
打不着的大喇叭
2024/03/11
5280
一、Vue2笔记--基础篇--15-Vue内置指令v-text、v-html、v-cloak、v-once、v-pre
如何优雅地覆盖组件库样式?
大家好,我是年年!组件库的样式覆盖不掉,这应该是很多前端在工作中遇到过的问题。今天从实际案例出发分析原因,最后会给出在React和Vue项目中的最优解。
用户9899350
2022/07/29
2.9K1
如何优雅地覆盖组件库样式?
Vue:scoped与module的使用与利弊
一个web应用是离不开html、css与js,其中css充斥的整个web项目中。css它有一个特定,它是全局的。这样的特性导致的结果是,一旦你在不同的地方定义了相同的css命名,那么它们的样式就会相互覆盖,最终导致的style错乱,从而影响整个网页布局。
Rouse
2019/07/18
1.3K0
Vue:scoped与module的使用与利弊
vue-cli学习笔记 基础知识篇
减少模板中的计算逻辑 进行数据缓存 依赖固定的数据类型(响应式数据)
JokerDJ
2023/11/27
1650
vue-cli学习笔记 基础知识篇
React组件设计实践总结03 - 样式的管理
CSS 是前端开发的重要组成部分,但是它并不完美,本文主要探讨 React 样式管理方面的一些解决方案,目的是实现样式的高度可定制化, 让大型项目的样式代码更容易维护.
_sx_
2019/08/07
7.3K0
React组件设计实践总结03 - 样式的管理
一个合格的中级前端工程师应该掌握的 20 个 Vue 技巧
之前写过一篇文章,关于 Vue 属性透传的,文章中我列举了很多种方法去实现属性透传。其中包括直接设置 props,v-bind="$attrs",render function 等方式。感兴趣,详情看 【Vue 进阶】——如何实现组件属性透传?
GopalFeng
2020/09/24
6.2K0
一个合格的中级前端工程师应该掌握的 20 个 Vue 技巧
视频讲解vue2基础之渲染v-if/v-show/v-for/v-html
内容将会被替代为对应数据对象上msg的值。无论何时,绑定的数据对象上msg发生了改变,插值处的内容都会更新
淼学派对
2022/11/20
7700
视频讲解vue2基础之渲染v-if/v-show/v-for/v-html
9 种你或许不知道的 Vue 好用小技巧
这篇文章是将自己知道的一些小技巧,结合查阅资料整理成的一篇文章,如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。
夜尽天明
2019/06/20
9400
9 种你或许不知道的 Vue 好用小技巧
前端-Vue,你或许不知道的这些小技巧
用Vue开发一个网页并不难,但是也经常会遇到一些问题,其实大部分的问题都在文档中有所提及,再不然我们通过谷歌也能成功搜索到问题的答案,为了帮助小伙伴们提前踩坑,在遇到问题的时候,心里大概有个谱知道该如何去解决问题。这篇文章是将自己知道的一些小技巧,结合查阅资料整理成的一篇文章,如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。
grain先森
2019/03/28
1.1K0
前端-Vue,你或许不知道的这些小技巧
VUE-挂载点-实例成员-数据-过滤器-文本指令-事件指令-属性指令-表单指令-01
目前市面上主流的前端三大框架(均开源):Angular(Facebook主导的)、React(Github主导的)、Vue(尤雨溪个人项目,全球开发者社区维护)
suwanbin
2019/10/09
2.7K0
VUE-挂载点-实例成员-数据-过滤器-文本指令-事件指令-属性指令-表单指令-01
【Vue #2】脚手架 & 指令
在 构建工具(Vite/Webpack )环境下开发Vue,这是最推荐的、也是企业采用的方式
IsLand1314
2025/04/11
980
【Vue #2】脚手架 & 指令
Vue中scoped css和css module比较
scoped css 官方文档 scoped css可以直接在能跑起来的vue项目中使用。 使用方法: <style scoped> h1 { color: #f00; } </style> 使用scoped划分本地样式的结果编译结果如下: h1[data-v-4c3b6c1c] { color: #f00; } 即在元素中添加了一个唯一属性用来区分。 缺点 一、如果用户在别处定义了相同的类名,也许还是会影响到组件的样式。 二、根据css样式优先级的特性,scoped这种处理会造成每个样式的权重
mcq
2018/06/27
2.4K0
相关推荐
vue的v-html指令使用注意事项
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验