Nuxt - 操作文档 bodyattrs 类中的类属性

Mik*_*ton 4 vuejs2 nuxt.js

我一直在寻找一个好的解决方案来动态修改可以附加到 bodyAttrs 的类,但没有成功。我没有找到专门解决/回答我的情况的帖子。我希望有人能帮帮忙。

我正在开发一个项目,在该项目中我使用具有 SSR 功能的 Nuxt,该站点具有可以通过用户配置进行操作的属性。设置场景...用户可以操作 body 标签,并且可以更改背景颜色。

我已经设置了文档中定义的 app.html 页面(https://nuxtjs.org/guide/views#document)。然后我像这样设置头部:

head() {
    return {
        bodyAttrs: {
            class: this.dataLoaded ? "bodyAttr" : ""
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

这是 bodyAttr 类的样子。这是启动时的默认值:

.bodyAttr {
    background: linear-gradient(#0098db, #0046ad);
}
Run Code Online (Sandbox Code Playgroud)

加载数据时,我需要动态地将背景属性颜色更改为用户配置选择的值。

有没有办法做到这一点......或者我是从错误的方向接近这个?谢谢。

Spi*_*der 5

我会考虑在 body 标记中添加和/或删除类,然后在 CSS 中定义这些类的样式。

export default {
    data() {
        return {
            darkMode: false
        }
    },
    head() {
        return {
            bodyAttrs: {
                class: this.darkMode ? 'my-gradient' : 'normal-mode'
            }
        }
    },

}
Run Code Online (Sandbox Code Playgroud)

然后在你的 CSS 中的某个地方:

.my-gradient {
        background: linear-gradient(#0098db, #0046ad);
}
.normal-mode {
    background: none;
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,将 darkMode 设置为 true 会将my-gradient类应用于 body 标记,将其设置为 false 将应用该类normal-mode