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

页面适配,高度撑满

有的页面是整屏显示的,需要高度撑满来适配,一般设计稿的尺寸是360*800

 * 适配规则:
  - 横屏时(宽度 > 高度),按高度撑满适配:1rem = 屏幕高度 / 100
  - 竖屏时:
    - 当屏幕高度 >= 800px 时,按高度撑满适配:1rem = 屏幕高度 / 100
    - 当屏幕高度 < 800px 时,按宽度撑满适配:1rem = 屏幕宽度 / 45(宽度360px对应45rem)
1、安装postcss-pxtorem插件
2、screenAdapter.js
/*** 屏幕高度适配工具* 设计稿基准:360px * 800px* 根据屏幕高度动态设置rem基准值,使页面内容随高度缩放* * 原理:设计稿800px对应100rem,所以1rem = 屏幕高度 / 100*//*** 设置根元素字体大小(rem基准值)* 1rem = (屏幕高度 / 设计稿高度) * 8px* 这样设计稿中的800px对应100rem,360px对应45rem* * 适配规则:* - 横屏时(宽度 > 高度),按高度适配:1rem = 屏幕高度 / 100* - 竖屏时:*   - 当屏幕高度 >= 800px 时,按高度适配:1rem = 屏幕高度 / 100*   - 当屏幕高度 < 800px 时,按宽度适配:1rem = 屏幕宽度 / 45(宽度360px对应45rem)*/
function setRootFontSize() {const screenHeight = window.innerHeight || document.documentElement.clientHeightconst screenWidth = window.innerWidth || document.documentElement.clientWidthlet baseFontSize// 判断是否为横屏const isLandscape = screenWidth > screenHeight// 横屏时,按高度适配if (isLandscape) {// 设计稿800px对应100rem,所以1rem = 屏幕高度 / 100baseFontSize = screenHeight / 100} else {// 竖屏时,高度小于800时,按照宽度撑满360去适配if (screenHeight < 800) {// 设计稿宽度360px对应45rem,所以1rem = 屏幕宽度 / 45baseFontSize = screenWidth / 45} else {// 高度 >= 800px 时,按高度适配// 设计稿800px对应100rem,所以1rem = 屏幕高度 / 100baseFontSize = screenHeight / 100}}// 设置根元素字体大小document.documentElement.style.fontSize = `${baseFontSize}px`
}/*** 防抖函数*/
function debounce(func, wait) {let timeoutreturn function executedFunction(...args) {const later = () => {clearTimeout(timeout)func(...args)}clearTimeout(timeout)timeout = setTimeout(later, wait)}
}/*** 使用requestAnimationFrame优化的resize处理*/
let rafId = null
let lastHeight = window.innerHeightfunction handleResize() {if (rafId) {cancelAnimationFrame(rafId)}rafId = requestAnimationFrame(() => {const currentHeight = window.innerHeight || document.documentElement.clientHeightconst currentWidth = window.innerWidth || document.documentElement.clientWidthconst isLandscape = currentWidth > currentHeight// 横屏时,宽度和高度变化都需要更新;竖屏时,高度小于800时宽度变化也需要更新;高度>=800时,只在高度变化时更新const needUpdate = isLandscape ? true // 横屏时,宽度和高度变化都需要更新: currentHeight < 800 ? true // 竖屏且高度小于800时,宽度变化也需要更新: Math.abs(currentHeight - lastHeight) > 1 // 竖屏且高度>=800时,只在高度变化时更新if (needUpdate) {lastHeight = currentHeightsetRootFontSize()}rafId = null})
}/*** 初始化适配*/
function initScreenAdapter() {// 初始设置
  setRootFontSize()// 监听窗口大小变化(使用防抖优化)const debouncedResize = debounce(handleResize, 100)window.addEventListener('resize', debouncedResize)// 监听屏幕方向变化window.addEventListener('orientationchange', () => {// 延迟执行,等待屏幕方向变化完成setTimeout(() => {setRootFontSize()}, 100)})// 监听页面可见性变化(处理浏览器窗口切换)document.addEventListener('visibilitychange', () => {if (!document.hidden) {setTimeout(() => {setRootFontSize()}, 100)}})
}export default initScreenAdapter

3、在main.js中引入:

// 引入屏幕适配工具
import initScreenAdapter from '@/utils/screenAdapter'
// 初始化屏幕适配
initScreenAdapter()

4、postcss.config.js

module.exports = {plugins: {'postcss-pxtorem': {rootValue: 8, // 设计稿800px对应100rem,所以1rem=8pxunitPrecision: 3, // 保留3位小数propList: ['*'], // 所有属性都转换selectorBlackList: [], // 不排除任何选择器replace: true, // 替换而不是添加mediaQuery: false, // 不转换媒体查询中的pxminPixelValue: 1, // 最小转换值,小于1px的不转换exclude: /node_modules/i // 排除node_modules中的文件
    }}
}

5、在vue文件中直接使用设计稿上的尺寸(单位是px)即可

 

http://www.rkmt.cn/news/68740.html

相关文章:

  • 2025年狗狗止痒短期方案十大品牌排行榜,快速止痒应急办法精
  • 2025国内企业如何选择国际短信平台?国际物流通知短信平台,全球覆盖、成本控制与高并发能力十强全解析
  • 商标转让平台有哪些?买商标最值得推荐的商标交易平台大盘点!
  • 2025年实木椅源头厂家权威推荐榜单:实木家具‌/书柜‌/电视柜‌源头厂家精选
  • [转]Java实现OPC UA客户端
  • 宽度设置width:100%时 margin不生效问题处理
  • 计算机图形中的法线矩阵:深入理解与应用 - 教程
  • 2025中国管理咨询服务商实力榜:正睿咨询集团领衔,七大领域高潜力本土品牌深度解析
  • 2025年12月的闲谈
  • 2025年上海办公室装修公司排名TOP5:迎湖办公室装修实力
  • 2025年哈尔滨南岗区影视后期培训机构推荐:售后完善的影视后
  • 支持最新unicode 17.0标准,可以输入10万汉字的五笔86输入法
  • 2025 年拼接屏经销商最新推荐榜,技术实力与市场口碑深度解析,高性能与可靠性兼具的优质品牌LED 拼接屏/OLED 拼接屏/液晶拼接屏/DLP 背投拼接屏代理商推荐
  • Ai元人文构想:下一代Ai是大行为模型
  • AI赋能测试开发,周末高薪私教班助你职场进阶!
  • 预生产测试环境时间的评估
  • Docker Compose 主要功能 - jerry
  • 2025年靠谱变频器厂家推荐:5 家实力品牌,覆盖工业+商用多场景
  • 南京混合机供应商综合实力排行榜,烘箱/高温电热鼓风干燥箱/实验室臭氧发生器/大型烘房/三维混合机/混合机混合机产品推荐排行
  • 线上内存泄漏问题,如何快速定位与修复?
  • CSS 文本和字体属性、列表属性 - 详解
  • 2025年制氮机维修定制厂家权威推荐榜单:制氮机设备‌/工业制氮机‌/高压制氮机‌源头厂家精选
  • 推荐几家海外社媒运营推广公司(12月更新),五家优质B2B海外社媒营销公司详细介绍
  • Argocd登录配置
  • MySQL 5.7 二进制安装步骤
  • 2025年上海工业流体设备企业排名,易勒机电设备稳居第一,口
  • 现浇楼梯多少钱一平?专业施工单位推荐,阁楼现浇/楼梯现浇/现浇楼梯/混凝土现浇/楼板搭建公司找哪家
  • 2025年电动护理床工厂权威推荐榜单:医院办公家具‌/候诊椅‌/医用诊疗床‌源头厂家精选
  • 2025年上海免费一键生成原创文章软件平台推荐榜单:上海ai写文案免费一键生成服务/上海文章自动生成服务商/上海AI写文章软件服务商精选
  • 破局AI舆情分析的“最终一公里“:BettaFish多智能体系统深度剖析