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

vue pc端网页实现自适应

一、基本原理

pc端做自适应可以用rem来实现,啥是rem,自己百度

二、新建rem.ts文件

// rem等比适配配置文件
// 基准大小
const baseSize = 14
// 设置 rem 函数
function setRem () {// 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。这里的1920是设计图的宽度const scale = document.documentElement.clientWidth / 1920;// 设置页面根节点字体大小document.documentElement.style.fontSize = baseSize * scale + 'px';
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.addEventListener('resize',()=>{setRem()
})

这个文件可以根据屏幕大小来设置根节点字体的大小,记住这里的baseSize,然后在main.ts文件中引入

三、安装postcss-pxtorem依赖

npm install postcss-px2rem px2rem-loader --save

在vite.config.ts文件中引入,我这项目用的是vue3 + vite + ts,你用的是webpack,那就在vue.config.js里面

import postCssPxToRem from 'postcss-pxtorem';
export default defineConfig(({ mode }) => {return {plugins: [vue()],css: {postcss: {plugins: [postCssPxToRem({// 自适应,px>rem转换rootValue: 14, // 这里不一定要14,但必须和rem.ts文件中的baseSize大小一样propList: ['*'], // 需要转换的属性,这里选择全部都进行转换selectorBlackList: ['norem'], // 过滤掉norem-开头的class,不进行rem转换}),],},},resolve: {alias: {// @:src  读取当前src在本地的目录'@': resolve(__dirname, './src'),// 'HkWebVideoCtrl': resolve('src/assets/js/webVideoCtrl.js'),}},server: {host: '0.0.0.0',port: 8000,open: true,},};
})

然后就可以直接在css里面使用px了,这个依赖会自动把px转换成rem,包括ui框架里面的,比如elmentui里面的,这样全局的css样式都是rem了,但是有一个缺陷就是行内元素里面的px不能转换,比如 <div style="width:300px"></div>,这里的px就转换不了,所以还得手动写一个js

// 获取当前屏幕大小与1920的比列,计算大小,这里的1920还是看设计图的宽度
export const getScaleByUI = (size: number) => {const scale = document.documentElement.clientWidth / 1920;return size * scale;
}

<div :style="{width:getScaleByUI (300) + 'px'}"></div>,但是不建议写在style里面,如果ui框架里面的样式用的是style,那就只能用穿透去修改了
这样所有的自适应就搞定了

http://www.lryc.cn/news/290272.html

相关文章:

  • Android 13以上版本读写SD卡权限适配
  • 并查集模板:食物链详解
  • 使用WAF防御网络上的隐蔽威胁之反序列化攻击
  • 05. 交换机的基本配置
  • yolo将标签数据打到原图上形成目标框
  • 002-00-02【大红ai源码】dolphinscheduler3.2.0 源码环境搭建------by孤山村头王大爷家女儿大红
  • python-自动化篇-运维-监控-如何使⽤Python处理和解析⽇志⽂件?-实操记录
  • 代码随想录算法训练营DAY6 | 哈希表(1)
  • 【嵌入式学习】C++QT-Day3-C++基础
  • 表贴式PMSM的直接转矩控制(DTC)MATLAB仿真模型
  • 详解OpenHarmony各部分文件在XR806上的编译顺序
  • 【美团】无人机-大数据开发工程师
  • 微服务系统设计:横向扩展和纵向扩展的对比
  • Java基于SpringBoot+Vue的网上超市管理系统
  • HTTP中POST、GET、PUT、DELETE方式的区别
  • 77.Go中interface{}判nil的正确姿势
  • ES实战回顾
  • Mysql 删除数据
  • CSS设置单行文字水平垂直居中的方法
  • 数论与图论
  • 海外云手机三大优势
  • AndroidStudio安装教程基础篇
  • RK3568 Android 13 系统裁剪
  • Ubuntu 隐藏Telnet主机SSH服务时显示版本信息问题
  • webpack环境配置
  • 树控件、下拉框、文本框常用测试用例
  • Java把列表数据导出为PDF文件,同时加上PDF水印
  • const与readonly详解
  • ArcGIS Pro 如何计算长度和面积等数据?
  • IntelliJ创建一个springboot工程