Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue v-html 指令


示例

使用 v-html 指令来输出包含 <ol><li> 标签的列表。

<div id="app">
  <div>{{ htmlContent }}</div>
  <div v-html="htmlContent"></div>
</div>
尝试一下 »

查看下面的更多示例。


定义和用法

v-html 指令用于将 HTML 标签和文本插入元素中。

如果尝试使用文本插值(使用花括号 {{ }})来输出 HTML 标签,则结果将只是一个文本字符串。查看上面的示例。

使用 <style scoped> 在单文件组件 (SFC) 中定义的局部样式不会影响来自 v-html 指令的 HTML。查看下面的第一个示例。

为了在 SFC 中使用 v-html 包含的 HTML 实现局部样式,我们可以使用带有 <style module> 的 CSS 模块。查看下面的第二个示例。

注意: 用户可以以某种方式决定使用 v-html 包含的内容的页面,存在跨站脚本 (XSS) 攻击的风险。


更多示例

示例 1

使用局部样式,样式对使用 v-html 包含的 HTML 不起作用。

此问题将在下一个示例中解决。

<template>
  <h1>Example</h1>
  <p>When using scoped styling, styling for HTML included with the 'v-html' directive does not work.</p>
  <p><a href="showvue.php?filename=demo_ref_v-html2_2">See the next example</a> for how we can fix this by using CSS Modules.</p>
  <div v-html="htmlContent" id="htmlContainer"></div>
</template>

<script>
export default {
  data() {
    return {
      htmlContent: "<p>Hello from v-html</p>"
    }
  }
};
</script>

<style scoped>
  #htmlContainer {
    border: dotted black 1px;
    width: 200px;
    padding: 10px;
  }
  #htmlContainer > p {
    background-color: coral;
    padding: 5px;
    font-weight: bolder;
    width: 150px;
  }
</style>
运行示例 »

示例 2

使用带有 <style module> 的 CSS 模块,而不是 <style scoped>,样式是局部的,并且样式对使用 v-html 包含的 HTML 起作用。

上一个示例中的此问题现在已解决。

<template>
  <h1>Example</h1>
  <p>Scoped styling for HTML included with the 'v-html' directive now works by using CSS Modules with 'style module', instead of 'style scoped'.</p>
  <div v-html="htmlContent" :id="$style.htmlContainer"></div>
</template>

<script>
export default {
  data() {
    return {
      htmlContent: "<p>Hello from v-html</p>"
    }
  }
};
</script>

<style module>
  #htmlContainer {
    border: dotted black 1px;
    width: 200px;
    padding: 10px;
  }
  #htmlContainer > p {
    background-color: coral;
    padding: 5px;
    font-weight: bolder;
    width: 150px;
  }
</style>
运行示例 »

相关页面

Vue 教程:文本插值


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.