vue3 uniapp h5 安卓和iOS开发适配踩坑记录

news2024/11/16 7:43:05

在这里插入图片描述

font-size适配屏幕大小及iOS和安卓状态栏及安全距离的处理

在这里插入图片描述
在这里插入图片描述
App.vue

<script setup lang="ts">
import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
import './main.scss'
onLaunch(() => {
  console.log("App Launch");
  var  width = document.documentElement.clientWidth;
  const fontSize = width / 750 + 'px';
  // 这样写是不生效的h5编译运行的文件是有默认的style样式的
  // 一个标签上不能同时出现两个style,不符合编译原则
  // document.documentElement.style.fontSize = fontSize;

  // 解决方法
  // 1. 利用html的默认style来实现
  // 2. 在html上添加--gobal-font-size(注意-gobal-font-size变量仅适用于css文件),设置文字的大小
        // 1. 在  static 文件夹下创建 css/public.css 文件
        // 2. 在 main.ts 文件中引入 public.css (import './static/css/public.css';)
    document.documentElement.className = 'gobal-font-size';
  // 3. 然后将设置文字大小的类添加到html标签上
    document.documentElement.style.setProperty("--gobal-font-size", fontSize);

  // 处理系统不同兼容性问题
  uni.getSystemInfo({
      success: function (res) {
          const statusBarHeight = res.statusBarHeight;
          document.documentElement.style.setProperty("--statusBarHeight", statusBarHeight + 'px');
          console.log('状态栏的高度', statusBarHeight)

          if (res.platform === "android") {
            document.body.classList.add('android');
          } else if (res.platform === "ios") {
            document.body.classList.add('ios');

            // 处理安全区域的距离
            const safeArea = res.safeArea;
            const bottomDistance = res.screenHeight - safeArea.bottom;
            document.documentElement.style.setProperty("--safe-area", bottomDistance + 'px');
            console.log('底部安全区域距离:', bottomDistance);

          } else {
            document.body.classList.add('other');
          }
      }
  })
});
onShow(() => {
  console.log("App Show");
});
onHide(() => {
  console.log("App Hide");
});
</script>
<style>
@import "@/static/fonts/iconfont.css";
</style>

public.css

html {
    --gobal-font-size: 0.45px;
    /*状态栏的高度*/
    --statusBarHeight: 44px;
    /*在竖屏正方向下的安全区域*/
    --safe-area: 34px;
}
.gobal-font-size {
    font-size: var(--gobal-font-size) !important;
}

#app {
    padding-bottom: var(--safe-area);
}

/* 安卓兼容性单独处理*/
.android {
    /* 处理状态栏的间距 */
    padding-top: var(--statusBarHeight);
}
/* ios兼容性单独处理*/
.ios {
    /* 处理状态栏的间距 */
    padding-top: var(--statusBarHeight);
}
/* 其它兼容性单独处理*/
.other {

}

记得在main.ts中引入public.css哟~
在这里插入图片描述
提醒:
能做全局的就千万不要单独写,后续维护是个麻烦。

iOS position:fixed失效

iOS的position: fixed是根据距离最近的scroll来定位的, 如果自定义弹窗是通过position: fixed来实现的,就不要在scroll-view里面调用,可以通过自定义样式(overflow: auto)来实现滚动。
在这里插入图片描述

calc 100vh 计算高度

最好不要使用height: calc(100vh - 44px)这种方式来计算高度,系统不一样,高度的计算方法也不一样,iOS有时候没问题,安卓会莫名的出现滚动条。

body 上使用 padding-top: env(safe-area-inset-top)

只针对主页有用,对tabbar页面无效,tabbar页面要单独处理。

页面设置100vh高度后Android会出现滚动条(body上添加padding处理状态栏的距离后出现的问题)

解决方法:

body {
	box-sizing: border-box;
}

在安卓上浏览器会将body元素的宽高设置为视口的宽高,并将任何添加到body元素上的padding会增加在总宽高上面,就会出现滚动条。

pinyin包实现省市区的选择

使用pinyin-pro包比pinyin包小
在这里插入图片描述
在这里插入图片描述
实现方法:

  1. 调用接口查看省市区的数据
  2. 处理省市区的数据
import {pinyin} from 'pinyin-pro';
// 声明变量存储处理的数据
let list = [];
// 数据处理
if (res.data?.length > 0) {
	res.data?.map(item => {
		// 将中文字符串转换成拼音数组
		const pinyinArray = pinyin(item?.name, {
			// 设置拼音首字母的风格
			style: pinyin.STYLE_FIRST_LETTER
		})
		// 获取拼音数组的第一个字母(这里有些多音字翻译的不准确要单独处理)
		const firstLetter = pinyinArray[0][0];
		// 将获取的第一个字母转换成大写字母
		const upFont = firstLetter.toUpperCase();
		// 判断拼音数组的第一个字母是否存在在list中
		const listIndex = list.findIndex(i => i?.letter === upFont);
		if (listIndex > 0) {
			// 相同首字母的数据合并在一起
			list[listIndex].data = [item, ...list[listIndex].data];
		} else {
			list.push({
				letter: upFont,
				data: [item]
			})
		}
	})
}
// 将处理过的数据从小到大排列
const sortList = list.sort((a, b) => {
	return a.letter.localeCompare(b.letter);
})

手机号实现344格式

在这里插入图片描述
注意:必须用input才能实现时候号码格式化。

<input v-model="mobileText" @input="mobileChange"/>
<div class="clear" v-if="mobileText.length > 0"></div>

mobileChange() {
	// 手机号码
	this.mobile = e.detail.value.replace(/[^0-9_]/g, '');
	// 页面显示的数据
	this.mobileText = this.mobile;
	// 实现344格式
	if (this.mobileText.length > 3 && this.mobileText.length < 8) {
		this.mobileText = this.mobileText.replace(/^(\d{3})/g, '$1 ');
	} else if this.mobileClear.length > 7) {
		this.mobileText = this.mobileText.replace(/^(\d{3})(\d{4})/g, '$1 $2 ')
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1234486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gitlab设置项目clone地址

直接在线修改地址 虽然是个小问题但是我查了很多都是说要去修改配置文件&#xff0c;可是我是docker部署的&#xff0c;修改配置文件之后我还要重新打包镜像想想都不咋规范&#xff0c;后才终于知道可以直接设置&#xff0c;不要改配置文件&#xff01;&#xff01;&#xff0…

亚马逊运营中动态/静态住宅IP代理的应用有哪些?跨境电商必备

作为全球最大的电商平台之一&#xff0c;亚马逊已经成为许多商家的首选销售平台。而代理IP作为近几天互联网的热门工具&#xff0c;在跨境电商界也起着非常强大的作用。那么在亚马逊运营中&#xff0c;适合动态住宅代理还是静态住宅代理呢&#xff1f;下面我们一起来探索&#…

C语言for循环实现斐波那契数列

斐波那契数列指的是这样一个数列 0,1, 1, 2, 3, 5, 8, 13, 21… 这个数列从第3项开始&#xff0c;每一项都等于前两项之和。 int main(){//前两项分别定义为i&#xff0c;j 两项之和我们定义为k//由于从第三项开始&#xff0c;所以先将前两项打印出来0和1int i0,j1,k;printf(&…

解决requests库进行爬虫ip请求时遇到的错误的方法

目录 一、超时错误 二、连接错误 三、拒绝服务错误 四、内容编码错误 五、HTTP错误 在利用requests库进行网络爬虫的IP请求时&#xff0c;我们可能会遇到各种错误&#xff0c;如超时、连接错误、拒绝服务等等。这些错误通常是由目标网站的限制、网络问题或我们的爬虫代码中…

手机照片一键去水印轻松摆脱不需要的旁观者

是什么让照片中的意外客人成为挑战&#xff1f;我们都经历过这种情况——在热门地标或繁忙的城市街道拍照&#xff0c;不可避免地会在画面中捕捉到陌生人。有时他们会无意中抢尽风头&#xff0c;转移观众的注意力。 这些水印不仅影响了照片的美观度&#xff0c;还给我们的观赏体…

【Element】el-progress 自定义进度条

一、背景 要求弹窗内显示进度条&#xff0c;根据接口获取当前进度值&#xff0c;间隔5秒调用接口获取最新进度值&#xff0c;当进度值为100时&#xff0c;允许关闭进度条弹窗 二、效果 三、实现步骤 3.1、按钮绑定事件&#xff0c;打开弹窗 <el-button class"cance…

dump备份命令

dump备份文件系统&#xff0c;或者目录 文件系统有等级划分&#xff0c;0为全部备份&#xff0c;1.针对上一次有变动的文件进行备份&#xff0c;以此类崔 目录备份&#xff1a;只有一个等级0&#xff0c; 针对文件系统类型有要求ext2&#xff0c;ext3&#xff0c;如果是其他…

(附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366

SSM多源异构数据关联技术构建智能校园 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;高校当然也不能排除在外。多源异构数据关联技术构建的智能校园是以实际运用为开发…

养猫7年:猫罐头牌子哪个好用?5款口碑好的猫罐头推荐!

猫罐头牌子哪个好用&#xff1f;刚开始养猫真的好心累&#xff0c;因为一开始啥也不懂&#xff0c;关于猫猫的饮食这也不会选那也不会选&#xff0c;就很容易踩雷&#xff0c;为此花了不少钱&#xff0c;相信很多新手铲屎官现在也处于这种状态吧。 作为一个养猫7年的资深铲屎官…

高德地图点击搜索触发输入提示

减少调用次数&#xff0c;不用每输入一次调用一次&#xff0c;输入完后再触发搜索 效果图&#xff1a; ![Alt](https://img-home.csdnimg.cn/images/20220524100510.png dom结构 <div class"seach"><van-searchshow-actionv-model"addressVal"…

docker和docker-compose生产的容器,不在同一个网段,解决方式

在实际项目中&#xff0c;使用docker run xxXx 和docker-compose up -d 不在同一个网段&#xff0c;一个是默认是172.17.x.x, 另一个是172.19.x.x。为解决这个问题需要自定义一个网络&#xff0c;我命名为“my-bridge” 首先熟悉几条命令&#xff1a; docker network ls 或…

构建和应用卡尔曼滤波器 (KF)--扩展卡尔曼滤波器 (EKF)

作为一名数据科学家&#xff0c;我们偶尔会遇到需要对趋势进行建模以预测未来值的情况。虽然人们倾向于关注基于统计或机器学习的算法&#xff0c;但我在这里提出一个不同的选择&#xff1a;卡尔曼滤波器&#xff08;KF&#xff09;。 1960 年代初期&#xff0c;Rudolf E. Kal…

学生党的福利!移动云重磅升级存储产品体系

如今&#xff0c;随着科学技术不断发展进步&#xff0c;电子产品的生产技术也变得越来越成熟。一方面&#xff0c;电子产品的功能越来越强大&#xff0c;质量越来越可靠&#xff1b;另一方面&#xff0c;产品价格越来越便宜&#xff0c;在人们生活中越来越普及。大学生群体可以…

解决ubuntu23.10 wifi不能使用的问题

解决ubuntu23.10 wifi不能使用的问题 今天升级到了ubuntu23.10之后&#xff0c;wifi不能使用。 参考此视频解决了问题&#xff1a; https://www.youtube.com/watch?appdesktop&vn92O8rNKVb0 sudo lshw -class networkcd /etc/pm/sleep.dlssudo touch configsudo gedit co…

HelpLook VS Zendesk:哪种知识库软件更适合您的业务

为任何组织创造一个开放且协作的环境至关重要。然而&#xff0c;高水平的员工每周可能会花费多达30个小时处理电子邮件和协作&#xff0c;对他们的工作效率产生了重大影响。 为了解决这个挑战&#xff0c;建立一种高效的信息共享方法至关重要&#xff0c;不会妨碍团队的生产力…

WinEdt 11.1编辑器的尝鲜体验

WinEdt 11.1编辑器的尝鲜体验 2023年5月19日&#xff0c;WinEdt 11.1版本发布了&#xff0c;相比WinEdt 10.3, 最新版更加漂亮&#xff0c;更加友好&#xff0c;更加好用了&#xff01; 最大的改变是WinEdt 11.1 有了自带的WinEdtPDF阅读器&#xff0c;所以不再需要下载第三方…

解决开着代理情况下pip或魔搭下载失败

解决开着代理情况下pip或魔搭下载失败 一、前言 最近由于经常配环境导致&#xff0c;老是要来回切clash关掉代理&#xff0c;非常的不方便 如下面的&#xff0c;魔搭模型下载失败 ValueError: invalid model repo path HTTPSConnectionPool(host‘www.modelscope.cn’, port4…

深度学习之基于YoloV5抽烟检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于YOLOv5&#xff08;You Only Look Once&#xff09;的抽烟检测系统可以用于实时检测图像或视频中是否存在抽烟行…

【Linux学习笔记】基础IO

这里写目录标题 1. 系统文件I/O1.1. 接口介绍1.2. 库函数接口与系统接口的关系 2. 文件描述符fd2.1. 0&1&2文件描述符2.2. 文件描述符的分配规则2.3. 重定向2.4. 重定向系统调用2.5. 进程独立性 3. Linux下一切皆文件4. 缓冲区4.1. 缓冲区的理解4.2. 缓冲区的位置 5. 理…

【通俗易懂】git原理、安装及连接gitlab,github

目录 一、GIT原理【这部分也挺简单&#xff0c;可以看看&#xff0c;如果没时间可以直接跳到第二部分】 SVN与Git的的区别 二、安装Git 2.1 获取Git安装程序 2.2 Git安装过程 三、Git连接Gitlab 3.1 gitlab准备工作 3.2 本地计算机准备工作及配置git 四、Git连接Github…