如何在Vuejs中为所有组件创建全局CSS文件(默认的背景颜色、按钮样式等)?
- 在index.html中导入CSS文件
- 在主组件中使用@import
- 将所有CSS放在主组件中(但那会是一个巨大的文件)
在您的index.html中导入css,但如果您正在使用webpack,则可以在主js配置中导入样式表,所有组件都将获得css。
正如下面的评论建议的那样,如果使用webpack,将这个添加到main.js中即可:
import './assets/css/main.css';
require('./assets/css/main.css');
现在它可以正常工作了。 - Jordyimport './assets/css/main.css'
就可以完成任务,无需使用require
。请注意不要改变原意,但需要使翻译内容更加通俗易懂。 - Aleksandar我发现最好的方式是在assets文件夹中创建一个新文件,我创建了一个名为global.css
的文件,但您可以根据自己的喜好命名。然后,在main.js
中导入这个文件global.css
。
注意:使用此方法,如果您认为global.css变得非常大,则可以创建多个文件,然后将所有这些文件都导入到main.js中。
@\assets\global.css
/* move the buttons to the right */
.buttons-align-right {
justify-content: flex-end;
}
主要的.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 的上面的答案一样? - darmisstyle
属性来声明您的 CSS 文件:<style>
@import './assets/css/global.css';
</style>
main.js
中具有相同的效果吗?@Coder Absolute 的答案意味着你也可以在这里添加更多的导入吗? - darmis import '@/assets/main.css';
- src
- assets
- _global.scss
- _colors.scss
- _fonts.scss
- _paragraphs
- index.scss // <-- import all other scss files.
据我所知,有两种方法可以实现这个目标。
利用vue.config.js
配置文件,可以使用sass替代less进行配置:
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";
就足以达到目的。Sass宣布了他们的新模块系统。为什么不使用@use和@forward?
我的方法是使用vite最好的方式来使用scss。 使用defineConfig设置全局scss(颜色,mixin),并在所有组件中重用,无需导入。
css: {
preprocessorOptions: {
scss: {
additionalData: `@use "~/styles/main.scss" as *;`,
},
},
},
Here: code sandbox
@use "~/styles/main.scss" as *;
时,相当于将所有的scss导入到你的文件中。因此,在styles
文件夹中必须存储scss的变量。
如果你想要为通用样式或重置样式进行设置,必须将其放入src/index.scss
中。// 在这里放置通用css或重置css。
:root {
--danger: #fe2c55;
--danger-dark: #d60032;
--danger-light: #ff5c83;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
- undefinednpm install node-loader sass-loader
module.exports = {
css: {
loaderOptions: {
sass: {
additionalData: `@import "@/styles/base.scss";`
}
}
}
};
<head>
部分内的 <link>
元素中添加 CSS。<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="./src/assets/styles.css">
/* ... */
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>