1.由来
- 宏观角度:大屏看板要刚好占满屏幕,不能留有空白区域,也不能出现内容溢出,或者出现滚动条的情形
- 微观角度:内容必须跟着屏幕分辨率的变化而变化,分辨率大的内容跟着大,分辨率小的内容跟着小
2.CSS自适应单位
- CSS中的自适应单位有2种:vw/wh 和 rem
- vw/wh:100vw当前视口宽度,优点是无需依赖js即可自适应屏幕大小,缺点是无法直接用其书写具体的样式大小(字体大小,边框大小,边距大小等)
- rem:1rem为当前html元素的字体大小,优点相对于vw方便书写样式大小(字体大小,边框大小,边距大小等),缺点是每次屏幕发生变化都依赖js进行初始化
3.自适应时机
- 页面初始化时:必须做自适应(重要)
- 页面开启全屏,切换全屏时:全屏切换一般只会影响页面高度,因为非全屏时,浏览器菜单栏,工具栏有占据一部分屏幕高度。这种高度的差异变化,会导致影响一些表格分页,或者echarts图表的展示,会有影响,但不会很大,做不做自适应看项目要求
- 页面窗口化时:生产环境使用时,不会出现这种窗口化的情形,这种场景可以不考虑
4.px转vw
- 鉴于vw的特性,可以在开发中使用px进行大小设置,在代码编译的过程使用工具自动将样式中的px转换为vw,只需要设定好转换规则即可
- 安装 postcss-px-to-viewport
npm i postcss-px-to-viewport -D
- 配置:在项目根目录创建文件 postcss.config.js ,写入以下内容
module.exports = {
plugins: {
"postcss-px-to-viewport": {
viewportWidth: 3840,
viewportHeight: 2160,
unitPrecision: 5,
viewportUnit: 'vw',
selectorBlankList: ['ignore', 'tab-bar'],
minPixelValue: 1,
mediaQuery: false,
exclude:[/Tabbar/,/node_modules/]
}
}
}
- 效果:符合转换规则的px将自动转换为vw,可以在生产环境中自动随着视口的大小变化而变化,从而做到自适应
5.echarts自适应
- echarts图形可以根据容器大小自适应,但是文字不行,需要渲染echarts之前传入设定好的文字大小,可以定义一个转换文字自适应大小的方法
function getAdaptionWidth(number = 0){
var ratio = document.body.clientWidth / 3840
return Math.floor(Number(number) * ratio)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了