2

I would like to add style to HTML code in a v-html. I tried several solutions but nothing functional :(

Here is my code:

Template :

<div
  class="para"
  v-html="value" 
/>

Script :

export default {
  data () {
    return {
      value : "<h2> TITLE </h2> <p> PARA </p>"
    }
  },
}

Style :

.para >>> h2 {
  color: blue;
}

.para >>> p {
  color: red;
}

Thanks in advance !

Dan
  • 59,490
  • 13
  • 101
  • 110
Testostas
  • 87
  • 1
  • 8

2 Answers2

5

If you're using scoped style without SASS, use the >>> combinator this way:

>>> .para > h2 {
  color: blue;
}

>>> .para > p {
  color: red;
}

If you're using scoped style with SASS, use the ::v-deep combinator:

::v-deep .para > h2 {
  color: blue;
}

::v-deep .para > p {
  color: red;
}

Otherwise:

.para > h2 {
  color: blue;
}

.para > p {
  color: red;
}

Here is a demo

Dan
  • 59,490
  • 13
  • 101
  • 110
1

2023 Edit Using Vue 3 + Vite: you will now get this warning when you try to use the solution above:

[@vue/compiler-sfc] ::v-deep usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead.

So, use this instead

:deep(.para > h2) {
  color: blue;
}
:deep(.para > p) {
  color: red;
}
Gil
  • 21
  • 4