首页 > 编程语言 >uniapp--微信小程序 问题记录

uniapp--微信小程序 问题记录

时间:2022-10-09 15:35:17浏览次数:56  
标签:uniapp 1rpx -- rpx px rem 微信 屏幕

自动适配问题

rem适配

为什么选择rem

a) 机型太多,不同的机型屏幕大小不一样
b) 需求:一套设计稿的内容在不同的机型上呈现的效果一致,根据屏幕大小不同的变化,页面中的内容也相应变化

  • 原生代码实现
function remRefresh() {
let clientWidth = document.documentElement.clientWidth;
// 将屏幕等分 10 份
// 设计稿为 750*...  1rem=75px
let rem = clientWidth / 10;
document.documentElement.style.fontSize = rem + 'px';
document.body.style.fontSize = '12px';
}
window.addEventListener('pageshow', () => {
remRefresh()
})
// 屏幕防抖
let timeoutId;
window.addEventListener('resize', () => {
timeoutId && clearTimeout(timeoutId);
timeoutId = setTimeout(() =>{
remRefresh()
}, 300)
})
  • 借助第三方库
lib-flexible + px2rem-loader
  • WXSS 扩展的特性 rpx

什么是rpx

WXSS 具有 CSS 大部分特性。同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。
与 CSS 相比,WXSS 扩展的特性有:

  1. 响应式⻓度单位:即尺寸单位 -->rpx
  2. 样式导入

rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。
如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

设备 rpx换算px (屏幕宽度/750) px换算rpx (750/屏幕宽度)
iPhone5 1rpx = 0.42px 1px = 2.34rpx
iPhone6 1rpx = 0.5px 1px = 2rpx
iPhone6 Plus 1rpx = 0.552px 1px = 1.81rpx

注意

  1. 使用rpx开发微信小程序时 推荐设计师可以用iPhone6作为视觉稿的标准-->即只有在iPhone6标准中才可以一比二换算,更方便
  2. 当使用1rpx时, 在较小的屏幕上不可避免的会有一些毛刺,建议直接使用px
  3. rpx为微信小程序wxss的特性 如果你使用uniapp开发多端的话 建议使用rem;就开发微信小程序 是没有什么问题的

使用箭头函数导致this指向错误的问题

箭头函数会改变this指向,当我使用箭头函数后,函数中的this不再指向实例而是指向函数本身,导致data其实是找不到的发生报错

解决方法:

  1. 不使用箭头函数;
  2. 使用箭头函数需要提前保存this指向

关于路径的问题

  1. /代表根目录:如引入根目录下的images/图片
<image src="/images/测试头像图片.jpg"></image>
  1. 其余的如:../上一级目录、./同级目录,都与一般无异

样式覆盖问题

uniapp使用的是scss的话 使用 ::v-deep

::v-deep .my-car-title{
	display: flex;
	align-items: center;
	position: relative;
}

less的话 使用/deep/

经常出现的问题有 在uni上样式调的好好的 在微信小程序上样式变了

原因分析:微信小程序有样式隔离,其二 uni打包成微信小程序之间经过代码打包 会有部分标签class发生改变或者不生效的情况,主要以打包后的 代码为调试的基础

解决思路思路是:全局写样式覆盖

标签:uniapp,1rpx,--,rpx,px,rem,微信,屏幕
From: https://www.cnblogs.com/zjxlicheng/p/16772301.html

相关文章

  • typora快捷键
    一级标题二级标题三级标题四级标题五级标题六级标题下划线加粗斜体待完成//注释classA{Stringname;intno;}ctrl+l按行选中Ctrl+......
  • 二十一: Mysql 锁机制
    Mysql锁机制事务的隔离性由这章讲述的锁来实现。1.概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并......
  • 报告分享|2022年中国跨境电商SaaS行业研究报告
    报告链接:http://tecdat.cn/?p=29075受疫情影响中国2020年Q3跨境电商市场呈爆发式增长,其中大量的中小卖家构成了跨境电商SaaS厂商入局与成长的丰厚土壤。跨境电商SaaS按功......
  • 实验4:开源控制器实践——OpenDaylight
    基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s进阶要求......
  • Salesforce入门的三大技巧,新手可以点进来看看!
     想要在Salesforce生态系统中找到一份工作,经验是绝大多数企业的要求。对于想要入行的零经验者而言,这无疑是一个令人头疼的问题。 幸运的是,还有很多其他方法可以积累S......
  • 调试windows服务
    windows服务启动后,进程是system权限,一般od等无法附加,通常有2个办法 方法1(不完美): 找到服务对应的进程pe文件,直接拖入od载入,如果直接跑起来会闪退,因为服务进程肯定......
  • IP编址
    1.IP编址IP地址分为网络部分(用来网络寻址)和主机部分(给主机使用)IP地址由32个二进制组成,通常用点分十进制形式表示网络地址:主机为全为0广播地址:主机位全为12.IP......
  • SpringBoot启动原理
    https://cloud.tencent.com/developer/article/1747423?from=article.detail.1449134背景1>大家都知道SpringBoot是通过main函数启动的,这里面跟踪代码到处都没有找到whi......
  • 【SpringBoot】SpringBoot 项目编写顺序
    创建项目1、创建maven/SpringBoot 项目2、添加依赖3、创建SpringBoot引导类Application 项目基本结构引导类Application同级目录下创建模块包   在......
  • let、const命令(学习阮一峰ES6记录)
    1.let命令ES6新增let命令,作用和var类似,用来声明变量,但是let只能在所在代码块(区域)中使用。例:1{2leta=2;3varb=3;4}5console.log(a)//aisn......