位置: IT常识 - 正文

uniapp宽屏开发PC端方案,及衍生问题解决(uniapp宽度)

编辑:rootadmin
uniapp宽屏开发PC端方案,及衍生问题解决

推荐整理分享uniapp宽屏开发PC端方案,及衍生问题解决(uniapp宽度),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp 宽屏,uniapp开发视频教程,uniapp 宽屏,uniapp适应大屏幕,uniapp开发视频教程,uniapp宽屏适配,uniapp开发pc页面,uniapp适应大屏幕,内容如对您有帮助,希望把文章链接给更多的朋友!

需要在uniapp的pages.json文件中配置

"rpxCalcMaxDeviceWidth": 3840,// rpx 计算所支持的最大设备宽度,单位 px,默认值为 960 "rpxCalcBaseDeviceWidth": 3840, // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375  "rpxCalcIncludeWidth": 750 // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750

正常电脑没有高于3840像素宽的,这个程度就足以;

在使用时,只要正常的按照1920/750 = 2.56的比例,在HBuliderX中进行比例配置,使用时进行px转化rpx即可。

 

调整完rpx后发现的问题:

问题一、pc端字体过大

问题描述:

但是在大屏中uniapp的rpx却衍生出一个问题,这样会有一个问题,就是当前的rpx是以3840rpx或以下(符合当前屏幕宽度)为基准分成750份处理的,以上任何一个属性都无法单独调整字体大小,这导致哪怕是1rpx都过于庞大;

直接使用标准单位px的问题,一是无法以屏幕宽度自动调整字体大小,二是12px已经是浏览器能解析的最小字体了,但是12px以常规的电脑屏幕1920像素来做基准,还是过于大了,实际开发中,应该需要更小的字体,我们如突破这个12px的极限,使用比12px更小的字体大小?

众所周知,在传统js中,最小的文字大小是12px,再小就只能使用缩小属性(transform:scale)进行调整,而如果整个页面都使用缩小属性,一是无法精确把控字体大小,二是只是字体变小,字体元素本身却没有任何改变,依旧以原大小进行占位,这会导致布局混乱。

解决:

uniapp宽屏开发PC端方案,及衍生问题解决(uniapp宽度)

我苦求答案,最终在uniapp的中发现了有一个及其有用却又容易被忽视的组件

<page-meta></page-meta>

 其属性中有一个为:

因此,借助这个属性,便可以如此操作:

<page-meta style="display: block;" root-font-size="1px"></page-meta>

注意:page-meta元素只能作为根元素使用,衍生出的PC与移动端同时适配的问题下面有解决

更多page-meta组件的信息,可点击查看官方文档

问题二、字体大小固定:

 接着又衍生出了第二个问题,虽然这样解决了12px最小的问题,这样的大小是以1px为基准进行调整的,这就失去了rpx根据屏幕宽度自动放大缩小的特性,px单位大小是固定死的。

解决:

思路:参考rem处理字体大小的方式,在main.js文件中,配置一个全局函数,由于是在main.js中配置,所以在每次进入页面的时候都会触发此函数。

代码:

//在main.js中配置function sizeFun() {// 宽屏字体大小适配let n = 1920;// 循环运算判断,共9次,最小屏幕192,最大屏幕3640,以下,n是当前预设屏幕宽,i是循环计算次数for (let i = 0; i < 9; i++) {// 如果当前屏幕宽就是设计稿屏幕(1920),就不进行缩放if (uni.getSystemInfoSync().windowWidth == n) {return 1;}// 如果当前屏幕宽小于1920if (uni.getSystemInfoSync().windowWidth < n) {// 那就进入循环,预设屏幕大小减去192,再判断当前屏幕是否大于1920-192n -= 192;// 如果当前屏幕大于预设屏幕,就赋值if (uni.getSystemInfoSync().windowWidth > n) {// i+1:因为i从零开始// 10-i+1:因为要算出当前是倒数第几次循环// 10-i+1/10:因为要取1以下的小数return (10 - (i + 1)) / 10;}}// 如果当前屏幕宽大于1920if (uni.getSystemInfoSync().windowWidth > n) {// 那就进入循环,预设屏幕大小加上192,再判断当前屏幕是否大于1920+192n += 192;// 如果当前屏幕小于预设屏幕,就赋值if (uni.getSystemInfoSync().windowWidth < n) {// i+1:因为i从零开始//(i+1)/10:因为要算出当前是第几次循环,得出小数,// 1+i+1/10:取1以上的小数// 结束循环return 1 + ((i + 1) / 10);}}}}//配置到全局方便使用Vue.prototype.$pageSize = sizeFun();

使用时:

<!-- 每次进入页面时都会判断当前页面宽度,并给出字体大小比例适配 --><page-meta style="display: block;" :root-font-size="$pageSize+'px'"><page-meta>

问题三、如何同时适配PC与移动端?

解决:

思路:由于PC的根元素必须是<page-meta></page-meta>因此要么pc和移动端都在page-meta的规则下使用v-if进行判断渲染,判断当前的设备是移动端或pc端,然后渲染对应的内容。要么就把移动端PC端文件分开,先判断,后通过uni.reLaunch进行跳转对应页面。

代码:

//main.js文件中配置// 是不是pc,通过判断进入对应页面function IsPC(path) {const userAgentInfo = navigator.userAgent;const Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];let flag = true;for (let v = 0; v < Agents.length; v++) {if (userAgentInfo.indexOf(Agents[v]) > 0) {flag = false;break;}}if (flag) { //在这里获取参数,跳转的时候把当前页面的参数一并带过去let paraString = window.location.href;let pathEnd = paraString.split("?")[1];console.log(path);//true为PC端,false为手机端uni.reLaunch({url: pathEnd ? `${path}?${pathEnd}` : `${path}`});return false;}}// 是不是移动端,通过判断进入对应页面function IsPE(path) {const userAgentInfo = navigator.userAgent;const Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];let flag = true;for (let v = 0; v < Agents.length; v++) {if (userAgentInfo.indexOf(Agents[v]) > 0) {flag = false;break;}}if (!flag) { //在这里获取参数,跳转的时候把当前页面的参数一并带过去let paraString = window.location.href;let pathEnd = paraString.split("?")[1];//true为PC端,false为手机端uni.reLaunch({url: pathEnd ? `${path}?${pathEnd}` : `${path}`});return false;}}//挂载全局方便使用Vue.prototype.IsPC = IsPC;Vue.prototype.IsPE = IsPE;//使用时(在移动端页面判断是否为pc端)://判断是否为pc端设备,参数为如果是pc端,要跳转的pc端页面路径,加上/pagesthis.isPC("/pages/pcindex/pcindex");//在pc端页面使用,判断是否为移动端//判断是否为移动端设备,参数为如果是移动端,要跳转的移动端页面路径,加上/pagesthis.isPE("/pages/index/index");

注意:在进行移动端与pc端的同步开发时,如果需要任何页面根据设备跳转对应页面,就尽量保证两个端的url参数相同,或尽量不使用url传参,否则需要自行对页面进行单独处理。

原创码文,创作与探索不易,如有帮助,请点赞支持

本文链接地址:https://www.jiuchutong.com/zhishi/297353.html 转载请保留说明!

上一篇:Linux- 系统随你玩之--网络上的黑客帝国(linux suid)

下一篇:都说计算机今年炸了,究竟炸到什么程度呢?(计算机还热门吗)

  • 苹果低电量模式有什么影响(苹果低电量模式对电池有影响吗)

    苹果低电量模式有什么影响(苹果低电量模式对电池有影响吗)

  • 小米8听筒声音小怎么办声音已经加到最大(小米8听筒声音突然变小了)

    小米8听筒声音小怎么办声音已经加到最大(小米8听筒声音突然变小了)

  • 微信被别人盗了手机号被换了怎么办(微信被别人盗了钱包里的钱怎么办)

    微信被别人盗了手机号被换了怎么办(微信被别人盗了钱包里的钱怎么办)

  • 全民k歌听不到自己唱(全民K歌听不到伴奏)

    全民k歌听不到自己唱(全民K歌听不到伴奏)

  • 拼多多砍价得多少人砍才能成功(拼多多砍价多少钱的商品易砍到)

    拼多多砍价得多少人砍才能成功(拼多多砍价多少钱的商品易砍到)

  • 支付宝群红包个数上限(支付宝群红包个人怎么发)

    支付宝群红包个数上限(支付宝群红包个人怎么发)

  • 联想m7600d打印机清零步骤(联想m7600d打印机驱动下载)

    联想m7600d打印机清零步骤(联想m7600d打印机驱动下载)

  • 映客公会进了还能退吗(映客公会招人)

    映客公会进了还能退吗(映客公会招人)

  • 苹果ota升级是什么意思(苹果ota升级会抹除数据吗)

    苹果ota升级是什么意思(苹果ota升级会抹除数据吗)

  • 手机wifi信号弱是什么,情况(苹果手机wifi信号弱)

    手机wifi信号弱是什么,情况(苹果手机wifi信号弱)

  • 苹果手机开不了机充电没反应怎么办(苹果手机开不了无线网怎么回事)

    苹果手机开不了机充电没反应怎么办(苹果手机开不了无线网怎么回事)

  • 苹果手机不能投屏怎么回事(苹果手机不能投屏小米电视怎么回事)

    苹果手机不能投屏怎么回事(苹果手机不能投屏小米电视怎么回事)

  • 荣耀v30有4G版吗(荣耀v30有8+256的吗)

    荣耀v30有4G版吗(荣耀v30有8+256的吗)

  • 荣耀20青春版怎么关闭应用悬浮窗(荣耀20青春版怎么样)

    荣耀20青春版怎么关闭应用悬浮窗(荣耀20青春版怎么样)

  • 酷狗音乐怎么全屏模式(酷狗音乐怎么全部收藏)

    酷狗音乐怎么全屏模式(酷狗音乐怎么全部收藏)

  • 苹果11和11pro屏幕大小(苹果11和11pro屏幕尺寸区别)

    苹果11和11pro屏幕大小(苹果11和11pro屏幕尺寸区别)

  • 台式电脑怎么强制关机(台式电脑怎么强制解除开机密码)

    台式电脑怎么强制关机(台式电脑怎么强制解除开机密码)

  • 低速内存卡什么意思(内存卡低速和高速有啥区别)

    低速内存卡什么意思(内存卡低速和高速有啥区别)

  • 11和11pro的区别(爱酷11和11pro的区别)

    11和11pro的区别(爱酷11和11pro的区别)

  • 微信验证身份怎么解除(微信验证身份怎么验)

    微信验证身份怎么解除(微信验证身份怎么验)

  • 苹果手机返厂维修对手机有影响吗(苹果手机返厂维修需要多久)

    苹果手机返厂维修对手机有影响吗(苹果手机返厂维修需要多久)

  • 华为m5青春版怎么截屏(华为m5青春版怎么恢复出厂设置)

    华为m5青春版怎么截屏(华为m5青春版怎么恢复出厂设置)

  • 快手直播条件是什么(快手直播有哪些条件)

    快手直播条件是什么(快手直播有哪些条件)

  • TPLINK路由器怎么设置端口映射 TPLINK路由器设置端口映射方法(tplink路由器怎么连接无线网络)

    TPLINK路由器怎么设置端口映射 TPLINK路由器设置端口映射方法(tplink路由器怎么连接无线网络)

  • 消费税的会计处理分录
  • 研发辅助账科目设置
  • 人员工资成本占收入多少合适,占总成本多少合适
  • 增值税进项加计扣除计入哪个科目
  • 两免三减半的概率是多少
  • 坏账损失的核算方法一般有两种
  • 电商返佣平台有风险吗
  • 其他应交款入哪个科目
  • 购买股权支付的相关税费怎么处理
  • 外出经营活动税收管理证明和跨区域涉税事项报告表
  • 利润表季报表
  • 月末印花税会计分录
  • 监控系统施工费用包括哪些内容
  • 小规模纳税人废品站卖废品发票开什么项目
  • 企业外购材料的入账价值包括
  • 自己去税务局开票怎么开
  • 免抵退系统应调整免抵退额吗?
  • 本月没有发生额,月末怎么结账
  • 会计记账凭证摘要模板
  • 苹果电脑怎么快速
  • php add
  • 青岛酒店式公寓出租
  • 购销合同印花税税率表
  • 准公益性企业
  • 约克大教堂是基督教吗
  • 2020年农业病虫害
  • Android Studio安装和使用教程(全文图解)
  • 广告费与业务宣传费不超过当年销售收入
  • vue中是如何划分的,每个区域的作用是什么
  • 城市公交网
  • axios.defaults.baseURL的三种配置方法
  • 黄金零售环节增值税的缴纳
  • 计算机视觉中的数学方法
  • 免税农业企业所得税怎样填报
  • 所得税申报怎么弥补以前年度亏损
  • 一般纳税人注销税务流程
  • 在pycharm中配置python
  • 暂未取得发票的费用怎么入账
  • java基本框架
  • 企业所得税的内容比土地增值税的多了
  • 资产负债表编制
  • 无法收回的其他应收款可以税前扣除吗
  • 港币转人民币怎么算
  • 买入返售金融资产属于金融资产吗
  • 以融资租赁形式的车贷没还上可以拖车吗
  • 出差人员的住宿费计入什么科目
  • 提前预支工资怎么打条子
  • 减免所得税额a201030怎么填
  • 预计销售收入增长率怎么算
  • 递延收益确认的递延所得税资产有期限吗
  • 收到了对方的作业怎么办
  • 个税返还申请流程
  • 抵扣联和发票联的区别
  • 二类银行卡是什么卡
  • mysql binlog redo
  • win8系统如何激活
  • mac自动操作怎么停止
  • solaris修改ip地址
  • xp系统如何做
  • 苹果电脑怎么下魔兽争霸
  • macos vmware
  • Nehe第六章纹理映射
  • javascript中声明变量的关键字
  • jquery教程
  • android kotlin开发
  • python怎么运作
  • unity游戏开发入门经典
  • xcode怎么新建项目
  • java script教程
  • nodejs制作网站
  • linux常用shell操作指令
  • shell脚本自动化
  • 深入理解javascript特性
  • javascript基础笔记
  • javascript零基础入门
  • python中的description
  • 国家税务总局办税指南
  • 深圳全电子发票开具流程
  • 北京一证通如何安装安全控件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设