构建时变量注入: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'.";
  }
}
相关推荐
xiaotao1313 小时前
第九章:Vite API 参考手册
前端·vite·前端打包
午安~婉3 小时前
Electron桌面应用聊天(续)
前端·javascript·electron
彧翎Pro4 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
小码哥_常4 小时前
解锁系统设置新姿势:Activity嵌入全解析
前端
之歆4 小时前
前端存储方案对比:Cookie-Session-LocalStorage-IndexedDB
前端
哟哟耶耶4 小时前
vue3-单文件组件css功能(:deep,:slotted,:global,useCssModule,v-bind)
前端·javascript·css
是罐装可乐4 小时前
深入理解“句柄(Handle)“:从浏览器安全到文件系统访问
前端·javascript·安全
华科易迅5 小时前
Vue如何集成封装Axios
前端·javascript·vue.js
康一夏5 小时前
Next.js 13变化有多大?
前端·react·nextjs
糖炒栗子03265 小时前
前端项目标准环境搭建与启动
前端