Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

203
Visualizações
Agregue reglas CSS desde textarea usando v-html

Estoy creando una aplicación de tipo WYSIWYG donde un usuario puede escribir CSS en un área de texto y esa regla de CSS se aplicará al HTML en la página. Probé algo como esto en la plantilla.

 <textarea v-bind="css"></textarea> <style v-html="css"></style>

VueCompilerError: las etiquetas con efectos secundarios ( y ) se ignoran en las plantillas de componentes del cliente.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Respuesta anterior, a continuación es mejor

Agregue textarea con v-model:

 <textarea v-model="css" />

Puede crear una etiqueta de estilo en el gancho onMounted:

 onMounted(() => { const style = document.createElement("style"); style.type = "text/css"; updateCss(style, css.value); document.getElementsByTagName("head")[0].appendChild(style); el.value = style; });

Debe poder acceder a este elemento más tarde, así que asigne estilo a el.value.

Luego agregue el reloj en el valor de entrada:

 watch(css, () => { updateCss(el.value, css.value); });

Donde updateCss es una función:

 const updateCss = (el, css) => { if (el.styleSheet) { el.styleSheet.cssText = css.value; } else { el.innerHTML = ""; el.appendChild(document.createTextNode(css)); } };

Manifestación:

https://codesandbox.io/s/cocky-mestorf-uqz6f?file=/src/App.vue:246-463

Editar

Encontré una solución mucho mejor:

 <template> <textarea v-model="css" /> <component :is="'style'" type="text/css" v-text="css"></component> </template> <script> import { ref } from "vue"; export default { setup() { const css = ref("body { background-color: blue; }"); return { css }; }, }; </script>

El componente no arroja el error sobre la etiqueta de estilo:

 <component :is="'style'">

Tenga en cuenta que hay v-text en lugar de v-html. V-html podría no ser seguro.

Demostración: https://codesandbox.io/s/festive-germain-q9tg3?file=/src/App.vue:122-281

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda