【问题标题】:Vue.js modify other component's styleVue.js 修改其他组件的样式
【发布时间】:2017-04-14 02:51:21
【问题描述】:

我正在使用带有 Vue.js 的 Webpack 来创建一个大型 Web 应用程序。我遇到的问题如下:

我正在使用 vue-router 和以下结构作为主应用模板:

<customNav></customNav>
<router-view></router-view>

导航是一个单独的文件组件,在组件文件中定义了自己的样式。假设它默认为黑色背景。现在,在某些情况下(通过路由器显示不同的视图时),我希望它是透明的。

我以为我可能只是覆盖路由器视图组件中的 CSS,但这不起作用,因为 Webpack 正在捆绑我导入的组件的所有 CSS,我必须导入 main.js 中的所有组件来定义他们在路由器。因此,覆盖组件中的样式会导致它成为全局默认值,即使该组件甚至没有被使用。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript css vue-component vue.js


    【解决方案1】:

    您可以向 VueJS 的 dynamic styling 寻求帮助。您可以根据变量的值分配一个类。所以在你的customNav 你可以有两个类:比如black-bgtransp-bg,你可以改变这将有助于一个变量:blackBackground

    <YourElem v-bind:class="{ 'black-bg': blackBackground, 'transp-bg'!blackBackground}"></YourElem>
    

    我认为您可以通过两种方式更改此变量:

    • 将此作为实例数据并根据当前路由进行更改。
    • 将其置于vuex 状态并根据您的要求更改不同的组件。

    【讨论】:

    • 这看起来像是一种可以使用的方法,尽管它肯定会与样式混淆,因为现在我正在使用 JavaScript 进行样式设置 - 通常有组件来防止这种情况发生。今天晚上我会试一试,然后报告它是如何工作的。感谢您到目前为止的回答!
    猜你喜欢
    • 2020-05-12
    • 2018-03-18
    • 2022-11-05
    • 2014-07-21
    • 1970-01-01
    • 2019-05-23
    • 2020-09-29
    • 2020-03-26
    • 2020-10-17
    相关资源
    最近更新 更多