屏幕兼容处理与移动端兼容|可视化大屏
- 自适应 与 响应式布局的区别 –通过js实现
- 关于移动端开发的兼容方案
- 关于大屏幕开发的兼容方案
1.自适应 与响应式布局
自适应: 通过css方式,能够达到:不同设备显示相同效果
优点: 只需要写一套css 缺点: 网页中文字只能缩小到12px 继续缩小也没有效果了,盒子内容溢出 导致页面混乱。 现在谷歌支持小于12px, 文字太小,用户看不到
响应式 :通过 css 监听或控制页面 根据 不同设备显示不同效果
优点:不同设备 的 样式显示比较好看 缺点:需要多套css样式
2.移动端兼容方法
2.1 流式布局 -【自适应】
所有盒子的宽 高间距 尽量使用 百分比 文字大小都用百分比
1 | .box{ |
2.2 自适应方案 2: rem em rpx
动态html body 的fontsize 实现rem单位自动 缩放
根据屏幕宽高 动态计算 html body 标签的字体大小,所有盒子 高 宽 字体大小 间距 都是用rem 单位
使用场景:
屏幕大小变动不大,推荐:只做 移动端兼容 ,或 只做pc兼容,
同时兼容横屏 竖屏 不推荐这种方式
- 自适应方案3: rpx
原理: 1px ==2rpx 基准屏幕宽度为375px
1px ==1rpx 当前屏幕为750px
1 | .box{ |
1 | const resize =()=>{ |
rem:相对页面根节点的 fontsize 的 相对单位
例:【谷歌浏览器 html生效】 html body fontsize ==20px 1rem ==20px
em: 1个字体单位 父盒子的fontsize 大小
例如: 父盒子的fontsize = 30px 1em ==30px
rpx :就是微信小程序官方 提供的 rem 的进阶版
问题: 流式布局 解决了 盒子宽高 间距 根据屏幕大小自动变化的问题,但没有解决字体大小变化的问题
- 通过 设置 html ,body标签的fontsize 实现rem的字体的相对单位
- 因为html body 固定的fangsize 导致 rem 也变成了固定值
- html body的 fontsize 跟随 屏幕的宽高 变化 而进行变化【必须使用js 监听屏幕宽高改变】
2.3 方案3 : 利用淘宝的 flexible.js 实现方案2的效果
2.4 方案4: 基于 前端工程化项目的插件 postcss-px2rem
实现方案2的效果
1 | https://blog.csdn.net/qq_54527592/article/details/120249040 |
- 项目安装
postcss-px2rem
1 | pnpm install postcss-px2rem amfe-flexible |
- 配置vite
1 | // vite.config.js 或 vite.config.ts |
- main.jsx
1 | import { StrictMode } from 'react' |
3.响应式布局
不同的设备 显示不同的效果(存在多套的css )
3.1 媒体查询 –css解决方案-【掌握 记住语法 常见屏幕高宽】
优点:所有兼容处理方案 中 最完美的,可以按照 不同的屏幕宽度 加载不同的css样式
缺点: 一套样式需要重复写多次
通过css 实现判断 当前的屏幕 需要使用 那一套 样式
常见屏幕高宽:
移动端不要超过
iphone 5 320
ihone 6-8 375
ihone678s XR 414
iphone 12 390
iphone 14 430
ipad 768 700-800
pc: 1080 1920
1 | /* 写一套默认样式 */ |
案例:
pc上 盒子的高宽 400*450 背景色 为 #f44
平板 盒子高宽 200*260 背景色位 blue
iphone6/7/8 盒子高宽 120*140 背景色 skyblue 外边距 20px
iphone 12-14 盒子高宽 140*170 背景色为白色 外边框为1px的green 线条 内边距为10px
3.2 Ui框架实现响应式布局的方案
- elemnt plus
1 | <el-row :gutter="10"> |
- antd
1 | <Row> |
4.特殊处理: 专门做大屏的 整个缩放
transform:scale(缩放倍数)
假设 不清楚 甲方的 大屏幕 到底是多大
按照设计图进行 px 直接写,写完样式之后 进行 自适应 transform 缩放布局
1 | // 基准值 1920*1080 x y ==1 |
5.datav 可视化大屏框架-【推荐】
官网地址:http://datav-react.jiaminghi.com/
面试题
浏览器的字体大小 默认字体大小:16px 最小字体大小:12px-【如果小于12px 必须使用缩放 transform:scale zoom, 现在浏览器已经支持 最小字体可以小于12px】
自适应的方案:
- 根据屏幕宽高 动态计算 html body 标签的字体大小,所有盒子 高 宽 字体大小 间距 都是用rem 单位