ChatGPT解决这个技术问题 Extra ChatGPT

在 Vuejs 中拥有全局 CSS 的最佳方式

在 Vuejs 中为所有组件创建一个全局 css 文件的最佳方法是什么? (默认 CSS,如背景颜色、按钮样式等)

在 index.html 中导入一个 css 文件

在主组件中执行@import

将所有 css 放在主要组件中(但这将是一个巨大的文件)

感谢@mods 没有将其关闭为基于选项的。它实际上对我有很大帮助。

t
trainoasis

在你的 index.html 中导入 css,但如果你使用 webpack,你可以在你的主 js 配置中导入你的样式表,你所有的组件都会得到 css。

正如下面的评论所建议的,如果使用 webpack 将其添加到 main.js 有效:

import './assets/css/main.css';

谢谢!我正在使用 webpack,所以在我的 main.js 文件中我做了 require('./assets/css/main.css');,它现在可以工作了。
@Jordy 我想最好的方法是使用 sass-loader 来完成它。只需几句话即可完成。这是解释的解决方案 - stackoverflow.com/a/46015906/5013932
@Jordy 不需要 require,但可以使用 import './assets/css/main.css') 完成。
一个例子对人们来说很好
警告:很好的解决方案。它运行。但是,如果您想要一个动态系统,例如,您不能将其转换为响应承诺。
C
Coder Absolute

我发现最好的方法是在 assets 文件夹 中创建一个新文件,我创建为 global.css,但您可以选择任何名称。然后,将此文件 global.css 文件导入 main.js 中。

注意:使用这种方法,如果您认为 global.css 变得非常大,您还可以创建多个文件,然后只需将所有这些文件导入 main.js 中。

@\assets\global.css

/* move the buttons to the right */
.buttons-align-right {
  justify-content: flex-end;
}

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './routes'

Vue.config.productionTip = false

// Importing the global css file
import "@/assets/global.css"

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

您知道这种方法是否与将其添加到 App.vue 具有相同的效果?正如@c24b 的上述回答?
对不起,我没有测试它是否有相同的效果。但是,我更喜欢分开我的文件(如果它们有意义的话)。
c
c24b

在 App.vue 中,您可以添加一个 style 属性来声明您的 CSS 文件:

<style>
  @import './assets/css/global.css';
</style>

您知道这种方法是否与将其添加到 main.js 具有相同的效果?作为@Coder Absolute 的答案,您也可以在这里添加更多导入吗?
这与在 main.js 中的效果不完全相同,导入是按照导入声明的顺序执行的,而不是模板的执行顺序。
P
PeeJee

您还可以执行以下操作:https://css-tricks.com/how-to-import-a-sass-file-into-every-vue-component-in-an-app/

我的文件夹大多是这样的结构:

 - src
   - assets
     - _global.scss
     - _colors.scss
     - _fonts.scss
     - _paragraphs
     - index.scss // <-- import all other scss files.

这也适用于普通的 css。


小心 PeeJee,您提出的解决方案仅推荐用于在整个应用程序组件中共享 scss 变量。此处的更多信息:https://vueschool.io/articles/vuejs-tutorials/globally-load-sass-into-your-vue-js-applications/“您必须确保您在数据配置中导入的文件仅包含未呈现的 SASS 代码,例如变量、mixin 和函数。否则,该代码将最终重复对于...中的每个组件
...最终的后处理 css 文件” – XaviPS [从答案转换为评论,但不适合]
感谢您提供@XaviPS 的信息,不知道!
u
user3932156

据我所知,有两种方法可以实现这一目标。

方法一

利用 vue.config.js 配置,less config 也可以用 sass 代替:

module.exports = {
  css: {
    loaderOptions: {
      less: {
        additionalData: `@import '@/style/common.less';`
      }
    }
  }
}

方法二

在您的 .vue 文件中,使您的样式如下所示:

<style lang="less">
@import (reference) "../../style/variables.less";
#app {
  background: @bgColor;
}
</style>

注意:(reference) 标志用于使 variables.less 中定义的变量生效。如果您没有变量,@import "../../style/variables.less"; 就足够了。

供您参考,您还可以查看此链接:

https://github.com/tjcchen/vue-practice/tree/master/multipage-app


O
Omar Izem

在您的资产文件夹中创建一个新的 css 文件,例如: global.css import "global.css" to main.js

    import '@/assets/main.css';

M
MD SHAYON

在根目录中创建一个 vue.config.js 文件 在 src 文件夹中创建一个样式文件夹,您可以在此处创建全局样式文件,例如 base.scss 以使用 scss 安装两个依赖项

npm install node-loader sass-loader

在您的 vue.config.js 中粘贴下面的代码

module.exports = {
    css: {
      loaderOptions: {
        sass: {
            additionalData: `@import "@/styles/base.scss";`
        }
      }
    }
  };