大屏适配(只对登录页生效)

"postcss": "^8.5.8",
"postcss-pxtorem": "5.1.1",
"vite-plugin-style-import": "1.4.1",

第一步:准备文件

// utils/rem.js
const baseSize = 30

// 设置 rem 的函数
export function setRem() {
  let html = document.documentElement
  //   // 以 1920 为基准
  let baseWidth = 1920
  let scale = html.clientWidth / baseWidth
  html.style.fontSize = scale * 192 + 'px'
}

// 重置 rem 的函数
export function resetRem() {
  const html = document.documentElement
  html.style.fontSize = ''
}

// 监听窗口变化的函数
export function initRemListener() {
  window.addEventListener('resize', setRem)
}

// 移除监听
export function removeRemListener() {
  window.removeEventListener('resize', setRem)
}

第二步:登录页

import { onMounted, onBeforeUnmount } from 'vue'
import { setRem, resetRem, initRemListener, removeRemListener } from '@/utils/rem'
onMounted(() => {
  // 进入登录页时启用 rem 适配
  setRem()
  initRemListener()
})
onBeforeUnmount(() => {
  console.log('离开不再适配rem')
  // 离开登录页时重置并移除监听
  resetRem()
  removeRemListener()
})

第三步:vite.config.ts配置

import postcssPxToRem from 'postcss-pxtorem'

server:{
    //...
},
css: {
      postcss: {
        plugins: [
          postcssPxToRem({
            rootValue: 192,
            propList: ['*'],
            selectorBlackList: [],
            minPixelValue: 1,
            // 👇 关键:只有登录页文件才转换
            exclude: (filePath: any) => {

              // 只对 login 文件夹下的文件进行转换
              if (filePath.includes('/views/login/') ||
                filePath.includes('login.vue')) {
                return false  // 包含这些文件,进行转换
              }
              return true  // 其他文件排除,不转换
            }
          })
        ]
      }
    }

第四步:重启

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值