构建时变量注入:Vite 环境下 SCSS 与 JavaScript 的变量同步机制

实现在base.scs中使用 width 和 height 的值

/utils/screenSize.js

javascript 复制代码
export default {
	width: 1920 * 2,
    height: 1080
};

vite.config.js

javascript 复制代码
import { defineConfig, loadEnv } from "vite";
import createVitePlugins from "./vite/plugins";
import screenSize from "./src/utils/screenSize.js";

export default defineConfig(({ mode, command }) => {
  const env = loadEnv(mode, process.cwd());
  const { VITE_APP_ENV } = env;
  return {
    base: VITE_APP_ENV === "production" ? "/" : "/",
    css: { 
      preprocessorOptions: {
        scss: {
          additionalData: `
          $wide-width: ${screenSize.wide.width};
          $wide-height: ${screenSize.wide.height};
        `
        }
      }
    }
  };
});

使用

base.scss

css 复制代码
@use "sass:math";

$inner-width: $wide-width;
$inner-height: $wide-height;

@function changePx($px, $type: vw) {
  @if $type == vw {
    @return (math.div($px, $inner-width) * 100 + vw);
  } @else if $type == vh {
    @return (math.div($px, $inner-height) * 100 + vh);
  } @else {
    @error "Invalid type. Use 'vw' or 'vh'.";
  }
}
相关推荐
漫随流水20 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
踩着两条虫21 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
jzlhll1231 天前
kotlin Flow first() last()总结
开发语言·前端·kotlin
用头发抵命1 天前
Vue 3 中优雅地集成 Video.js 播放器:从组件封装到功能定制
开发语言·javascript·ecmascript
蓝冰凌1 天前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛1 天前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js
柳杉1 天前
从动漫水面到赛博飞船:这位开发者的Three.js作品太惊艳了
前端·javascript·数据可视化
Greg_Zhong1 天前
前端基础知识实践总结,每日更新一点...
前端·前端基础·每日学习归类
We་ct1 天前
LeetCode 148. 排序链表:归并排序详解
前端·数据结构·算法·leetcode·链表·typescript·排序算法