当前位置: 首页 > news >正文

vite+vue3 css scss PC移动布局自适应

1. 安装 postcss-pxtorem 和 autoprefixer

npm install postcss-pxtorem autoprefixer --save

2. vite.config.js引入并配置

import postCssPxToRem from 'postcss-pxtorem'
import autoprefixer from 'autoprefixer'export default defineConfig({base: './',resolve: {alias},plugins: [vue()],css: {postcss: { // 关键代码plugins: [postCssPxToRem({ // 自适应,px>rem转换rootValue: 16, // 1rem的大小propList: ['*'], // 需要转换的属性,这里选择全部都进行转换}),autoprefixer({ // 自动添加前缀overrideBrowserslist: ["Android 4.1","iOS 7.1","Chrome > 31","ff > 31","ie >= 8"//'last 2 versions', // 所有主流浏览器最近2个版本],grid: true})]}}
})

4. 在根目录src下建立文件夹utils,然后创建rem.js文件 并在main.js中引入

  • PC端 rem.js
// 自适应
const baseSize = 16;
function resize() {// 当前页面屏幕分辨率相对于1920宽的缩放比例,可根据自己需要修改let scale = document.documentElement.clientWidth / 1920;// 下面这一行代码可以忽略,这是我另外加的,我加这行代码是为了屏幕宽度小于1280时就不继续等比缩放了if (document.documentElement.clientWidth < 1280) scale = 1280 / 1920// 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)document.documentElement.style.fontSize = `${baseSize * Math.min(scale, 1)}px`;
}
resize();
window.onresize = resize;
  • 移动端rem.js
// 自适应function resize() {let fs = document.body.clientWidth / 75; // 上面的75是根据设计图尺寸修改,例如设计图宽为1220,给左右两边各留10px,即1220-20=1200,1200/16(字体大小)等于75if (fs > 16) { // 控制字体大小,以免过大过小fs = 16;} else if (fs < 14) {fs = 14;}// 👇注意这里不能直接document.body.styledocument.body.parentNode.style = "font-size: " + fs + "px;";}resize();window.onresize = resize;
  • main.js 引入
import './utils/rem.js'
  • 也可直接写在App.vue里
<template><div id="app"></div>
</template> <script setup>// 自适应function resize() {let fs = document.body.clientWidth / 75; // 上面的75是根据设计图尺寸修改,例如设计图宽为1220,给左右两边各留10px,即1220-20=1200,1200/16(字体大小)等于75if (fs > 16) { // 控制字体大小,以免过大过小fs = 16;} else if (fs < 14) {fs = 14;}// 👇注意这里不能直接document.body.styledocument.body.parentNode.style = "font-size: " + fs + "px;";}resize();window.onresize = resize;
</script>
http://www.lryc.cn/news/100408.html

相关文章:

  • BLE配对和绑定
  • 无涯教程-jQuery - html( val )方法函数
  • 【单链表OJ题:删除链表中等于给定值 val 的所有节点】
  • vue element ui web端引入百度地图,并获取经纬度
  • 25.10 matlab里面的10中优化方法介绍—— 函数fmincon(matlab程序)
  • 赛效:如何将PDF文件免费转换成Word文档
  • java 8 的Stream API
  • TypeChat,用TypeScript快速接入AI大语言模型
  • Dcoker compose单机容器集群编排管理
  • P5635 【CSGRound1】天下第一(记忆化搜索)
  • 如何维护你的电脑:提升性能和延长使用寿命
  • Docker续集+Docker Compose
  • k8s deployment(k8s经典版)|PetaExpress
  • uni-app如何生成正式的APK
  • 低代码开发平台源码:可视化敏捷开发工具,拖拽式自定义表单界面
  • 利用读时建模等数据分析能力,实现网络安全态势感知的落地
  • 六、代理模式
  • Easy Glide
  • ppt怎么压缩到10m以内?分享好用的压缩方法
  • VBA技术资料MF35:VBA_在Excel中过滤数据
  • Debian12中为python3配置虚拟环境及在Pycharm中使用虚拟环境
  • android app控制ros机器人一
  • 二十章:基于弱监督语义分割的亲和注意力图神经网络
  • webpack5 学习之路
  • VSCode C++ 调试方法
  • Java设计模式-命令模式
  • Linux编译宏BUILD_BUG_ON_ZERO
  • 从Arweave开始:4EVERLAND存储签入挑战开始
  • 数据结构—链表
  • windows 10/11 修改右键新建菜单