javascript - 如何为 vue3 main div #app 提供动态类?
问题描述
我正在尝试为我的 vue3 应用程序的主 div 提供一个动态类。
当我使用下面的命令创建应用程序时,它会创建一个具有 id 的主 div 标签app
。我可以使用 css 更改样式,但由于页面中没有它,我无法动态更改类。
创建应用程序的代码
const app = createApp(App)
app.use(store)
app.use(router)
app.mount('#app')
我想做的事
<div id="app" :class="myClass"></div>
解决方案
您可以添加代表您的类的属性,然后使用 watch 来更新您的根元素document.querySelector('#app').classList = [val]
,我制作了以下示例来说明一个真实的工作示例,即模式从暗变为亮,反之亦然,我添加了名为的属性mode
,并且我使用按钮单击事件更改它,然后我观察它以更新根元素类:
const {
createApp
} = Vue;
const App = {
data() {
return {
mode: 'is-light'
}
},
watch: {
mode(val) {
document.querySelector('#app').classList = [val]
}
}
}
const app = createApp(App)
app.mount('#app')
#app {
padding: 12px;
border-radius: 4px
}
.is-dark {
background: #454545;
color: white
}
.is-light {
background: #f9f9f9;
color: #222
}
button {
-webkit-transition: all .2s ease;
transition: all .2s ease;
padding: 10px;
border: 0;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
color: #fff;
-webkit-box-sizing: border-box;
box-sizing: border-box;
background: transparent;
background: #4545ee
}
<script src="https://unpkg.com/vue@3.0.0-rc.11/dist/vue.global.prod.js"></script>
<div id="app" class="is-dark">
<button @click="mode= 'is-dark'" class="is-dark">
Dark
</button>
<button @click="mode= 'is-light'" class="is-light">
Light
</button>
<p>
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Corrupti quidem aspernatur provident fugit impedit esse itaque iusto iure voluptatem eaque?
</p>
</div>
推荐阅读
- javascript - push() 后数组为空
- r - r rvest 使用多个网站抓取多个 url,并且在某些节点中缺少值
- vhdl - 我在波形中的一个 CLK 周期内收到错误的信号
- android - 在 Kotlin 中以编程方式更改语言环境
- c# - 在运行时创建多个文本框并从数据库中分配值文本框..我想显示数据库中的所有数据
- python - 提取具有多个 URL 的字符串
- c++ - 返回递归和基本流程
- jwplayer - 将设置传递给 amp-jwplayer 插件
- firebase - 错误解析触发器:找不到模块“@custom-path”
- java - 如何从 firebase 数据库中获取登录用户的数据