构建时变量注入: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'.";
  }
}
相关推荐
代码哈士奇3 小时前
无界微前端学习和使用
前端·学习
一枚前端小能手3 小时前
🚀 Node.js 25重磅发布!快来看看吧
前端·javascript·node.js
csj503 小时前
前端基础之《React(3)—webpack简介-集成JSX语法支持》
前端·react
JarvanMo4 小时前
🚀 使用 GitHub Actions 自动化 Flutter CI/CD — Android 和 iOS (TestFlight) 部署
前端
濑户川4 小时前
Vue3 项目创建指南(Vue-CLI vs Vite 对比)
前端·javascript·vue.js
Mintopia4 小时前
🚀 Next.js 16 新特性深度解析:当框架开始思考人生
前端·后端·全栈
鼓掌MVP4 小时前
Rust Web实战:构建高性能并发工具的艺术
开发语言·前端·rust·异步编程·内存安全·actix-web·高性能web服务
Mintopia4 小时前
🌌 元宇宙 Web 场景中,AIGC 驱动的虚拟内容生成技术
前端·javascript·aigc
excel4 小时前
一文彻底搞懂 Vue3 中 ref 的源码实现(含详细注释)
前端