使用less定义样式,然后自动引入每一个组件

277 阅读1分钟

背景

因为项目中的文件特别多,有一些样式什么的,几乎会在每一个组件中都有用到,如果用的时候在每个组件都一一引入的话,过于麻烦了,这样的情况就可以使用自动导入的方式。这样相当于vue或者ts文件可以直接使用自动导入的文件内容。

定义要引入的文件

文件1.比如说项目的颜色属性 可以定义变量文件src目录下建文件assets/styles/variables.less

// 主题
@xtxColor: #27ba9b;
// 辅助
@helpColor: #e26237;
// 成功
@sucColor: #1dc779;
// 警告
@warnColor: #ffb302;
// 价格
@priceColor: #cf4444;

文件2.用less写一个函数,控制css样式
可以定义函数文件src目录下建文件assets/styles/mixins.less

// 鼠标经过上移阴影动画
.hoverShadow () {
    transition: all 0.5s;
    &:hover {
        transform: translate3d(0, -3px, 0);
        box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
    }
}

函数式写法还可以传递参数,比如

.hoverShadow (@y: -3px) {
    transition: all 0.5s;
    &:hover {
        transform: translate3d(0, @y, 0);
        box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
    }
}

自动导入

因为这个项目是使用vite,没有再使用webpack。 修改 Vite 配置,vite.config.ts

export default defineConfig({
    css: {
        preprocessorOptions: {
            less: {
                additionalData: `
                    @import "@/assets/styles/variables.less";
                    @import "@/assets/styles/mixins.less";
                `,
            },
        },
    },
})

步骤到这标志着已经导入完毕
使用方式: 因为已经导入到了文件中,所以就可以直接使用了,比如:

<style lang="less" scoped>
    h1 {
        background-color: @warnColor;
        .hoverShadow();
    }
</style>