尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

页面适配,高度撑满

页面适配,高度撑满
📅 发布时间:2026/6/20 16:33:39

有的页面是整屏显示的,需要高度撑满来适配,一般设计稿的尺寸是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)即可

 

相关新闻

  • 2025年狗狗止痒短期方案十大品牌排行榜,快速止痒应急办法精
  • 2025国内企业如何选择国际短信平台?国际物流通知短信平台,全球覆盖、成本控制与高并发能力十强全解析
  • 商标转让平台有哪些?买商标最值得推荐的商标交易平台大盘点!

最新新闻

  • 本地AI Agent选型指南:无GPU、断网、零运维场景下的四大框架实测
  • Legacy iOS Kit终极指南:免费解锁旧iPhone/iPad完整控制权
  • 五艘无人艇分布式围捕编队控制仿真研究(Matlab代码实现)
  • Windows苹果设备驱动安装终极指南:3步实现iPhone网络共享
  • 2026六盘水防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • emWin控件API实战:BUTTON与CHECKBOX的设计哲学与高级应用

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号