【Vue】Vue3 pc 端配置 rem 响应式

安装插件

npm install postcss-pxtorem && amfe-flexible

main.ts

import 'amfe-flexible';

vite.config.ts

import postCssPxToRem from 'postcss-pxtorem';

...

  // 响应式设置
  css: {
    postcss: {
      plugins: [
        postCssPxToRem({
          rootValue: 192, // 1rem的大小
          propList: ['*'], // 需要转换的属性,这里选择全部都进行转换
        }),
      ],
    },
  },

也可以单独创建 postcss.config.cjs

module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
    'postcss-pxtorem': {
      rootValue: 192, // 根据设计稿尺寸决定
      propList: ['*'],
    },
  },
}

App.vue

import { BrowserSize } from '@/utils/index';
onMounted(() => {
  BrowserSize();
});

// @/utils/index
export function BrowserSize() {
  var docEl = document.documentElement,
    clientWidth: number,
    clientHeight: number,
    clientWidth = docEl.clientWidth;
  clientHeight = docEl.clientHeight;
  if (!clientWidth) return;
  if (!docEl.addEventListener) return;
  // clientWidth = 1920;

  // if (clientWidth < 1920) {
  //   clientWidth = clientWidth;
  // }

  docEl.style.fontSize = clientWidth / 10 + 'px';
}

高度适配

export function setRem() {
  var docEl = document.documentElement,
    clientWidth: number,
    clientHeight: number,
    clientWidth = docEl.clientWidth
  clientHeight = docEl.clientHeight
  if (!clientWidth) return
  if (!docEl.addEventListener) return

  // 大于1920px的设备,不进行rem
  if (clientWidth > 1920) {
    clientWidth = 1920
  }

  // 适配高度,小于1080px,高度为1080px,此时会出现滚动条
  const app = document.getElementById('app')
  if (app) {
    if (clientHeight < 1080) {
      app.style.height = '1080px'
    } else {
      app.style.height = '100vh'
    }
  }

  docEl.style.fontSize = clientWidth / 10 + 'px'
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值