使用$el
对象改变背景颜色<div>
根级别上的标记。
methods: {
changeColor() {
this.$el.style.backgroundColor = 'lightgreen';
}
}
运行示例 »
请参阅下面的更多示例。
这个$el
object 表示 Vue 组件的根 DOM 节点。
这个$el
在安装 Vue 应用程序之前,对象不存在。
如果只有一个HTML 根元素位于<template>
:
$el
object 将是该根元素。$el
对象(参见上面的示例),但不建议这样做。ref
属性和其他 Vue 功能以声明方式更改 DOM,因为它会使代码更加一致且更易于维护(请参见下面的示例 1)。如果有多个HTML 根元素位于<template>
:
$el
object 只是 Vue 内部使用的占位符 DOM 文本节点(而不是实际的 DOM 元素)。$el
当有多个根元素时,对象(参见下面的示例 2)。笔记:在 Vue 3 的 Composition API 中,$el
属性不可访问于<script setup>
(使用setup
功能)。
使用ref
属性来更改背景颜色<div>
按照建议以声明方式标记,而不是使用$el
目的。
<template>
<div ref="rootDiv">
<h2>Example $el Object</h2>
<p>It is recommended, and more consistent, to use the ref attribute instead of the $el object to change the background color root DIV tag.</p>
<button v-on:click="changeColor">Click here</button>
</div>
</template>
<script>
export default {
methods: {
changeColor() {
this.$refs.rootDiv.style.backgroundColor = 'lightgreen';
}
}
}
</script>
运行示例 »
根中含有多个元素<template>
, 这$el
object 只是根元素的第一个元素的文本节点表示(不是实际的 DOM 元素),由 Vue 内部使用。
我们不能用$el
对象就是这样的情况。
<template>
<div>
<h2>Example $el Object</h2>
<p>We are not able to use the $el object to change the background color of the root DIV tag when there are other tags on the root level. Open browser console to see the error generated.</p>
<button v-on:click="changeColor">Click here</button>
</div>
<p>With this extra p-tag there are two tags on the root level.</p>
</template>
<script>
export default {
methods: {
changeColor() {
this.$el.style.backgroundColor = 'lightgreen';
}
}
}
</script>
<style>
#app > div, #app > p {
border: solid black 1px;
padding: 10px;
}
</style>
运行示例 »
使用$el
对象改变背景颜色<h2>
子元素。
<template>
<div>
<h2>Example $el Object</h2>
<p>Using the $el object to change the background color of the H2 child element.</p>
<button v-on:click="changeColor">Click here</button>
</div>
</template>
<script>
export default {
methods: {
changeColor() {
this.$el.children[0].style.backgroundColor = 'lightblue';
}
}
}
</script>
运行示例 »
Vue教程:Vue 模板参考
Vue教程:Vue 方法
Vue参考:Vue 'ref' 属性
Vue参考:Vue $refs 对象
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!