uniapp组件库fullScreen 压窗屏的适用方法

目录

#平台差异说明

#基本使用

#触发压窗屏

#定义压窗屏内容

#注意事项


所谓压窗屏,是指遮罩能盖住原生导航栏和底部tabbar栏的弹窗,一般用于在APP端弹出升级应用弹框,或者其他需要增强型弹窗的场景。

警告

由于uni-app的Bug,在最新版的HX2.8.6(包括之前的多个版本),此功能(组件)无效,等到uni-app修复此Bug时,我们会撤销此通告。

提示

这里的做法是在本页面打开一个新页面,同时在pages.json中配置本页面的背景为百分百透明,这样即可达到压窗效果。
由于只有APP支持设置页面背景透明度,故只有APP支持本组件做法,非APP端不支持。

#平台差异说明

AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序
xxxxxx

#基本使用

本组件只是提供参考思路和注意事项,因为每个人在弹窗需要实现的逻辑和样式都是不一样的,请参考本文档思路,自行实行相关功能。

首先,我们需要pages.json中声明一个页面用于弹窗:

// pages.json

"pages": [
	{
		"path": "uview-ui/components/u-full-screen/u-full-screen",
		"style": {
			"navigationStyle": "custom",  // 取消本页面的导航栏
			"app-plus": {
				"animationType": "fade-in", // 设置fade-in淡入动画,为最合理的动画类型
				"background": "transparent", // 背景透明
				"backgroundColor": "rgba(0,0,0,0)", // 背景透明
				"popGesture": "none" // 关闭IOS屏幕左边滑动关闭当前页面的功能
			}
		}
	}
]

通过上面的配置,我们得到了一个页面:

  • 这个页面去掉了导航栏
  • 页面进入的时候,是采用淡入动画的形式
  • 并且此页面的背景是百分比透明度,这样可以看到底层页面的内容
  • 移除在iOS上左滑手势,避免本页被左滑关闭

#触发压窗屏

我们在父页面(当前页面)通过路由方法,打开一个新页面(上面配置的压窗屏页面),由于它是一个普通的页面,故可以通过常规方法传递参数。

export default {
	onLoad() {
		// 也可以在onShow生命周期打开,此为uView封装的请求方法
		this.$u.route("/uview-ui/components/u-full-screen/u-full-screen?id=1");
	}
}

#定义压窗屏内容

当我们触发(打开)了压窗屏页面之后,将会有一个新的,背景透明的页面覆盖在本页面上,由于我们的终极目标就是要做一个弹窗,让其遮罩盖住"父页面"的导航栏和 Tabbar栏,所以这里我们可以使用uView的Popup 弹出层组件,并且将popup组件的mode参数设置center,即中部弹出的形式。

下方示例为打开一个Modal 模态框组件的示例,此组件内部用的也是popup组件。

<template>
	<u-modal v-model="show" :show-cancel-button="true" confirm-text="升级"
		title="发现新版本" @cancel="cancel" @confirm="confirm"
	>
		<view class="u-update-content">
			<rich-text :nodes="content"></rich-text>
		</view>
	</u-modal>
</template>

<script>
	export default {
		data() {
			return {
				show: true,
				// 传递给uni-app"rich-text"组件的内容,可以使用"<br>"进行换行
				content: `
					1. 修复badge组件的size参数无效问题<br>
					2. 新增Modal模态框组件<br>
					3. 新增压窗屏组件,可以在APP上以弹窗的形式遮盖导航栏和底部tabbar<br>
					4. 修复键盘组件在微信小程序上遮罩无效的问题
				`,
			}
		},
		onReady() {
			this.show = true;
		},
		methods: {
			cancel() {
				this.closeModal();
			},
			confirm() {
				this.closeModal();
			},
			closeModal() {
				uni.navigateBack();
			}
		}
	}
</script>

<style scoped lang="scss">
	.u-full-content {
		background-color: #00C777;
	}
	
	.u-update-content {
		font-size: 26rpx;
		color: $u-content-color;
		line-height: 1.7;
		padding: 30rpx;
	}
</style>

上面有一个需要注意的点,我们打开"压窗"弹窗后,可能需要通过一些按钮来关闭弹窗,这里关闭弹窗的本质意义是关闭弹出的页面(压窗屏弹框),所以用的是uni-app带的 关闭页面的接口uni.navigateBack(),见上方示例。

#注意事项

由于压窗屏其实也是一个普通的页面的,当我们关闭弹窗(顶层页面),"父页面"(上一个页面)就会显示出来,意味着会进入onShow生命周期,如有相关特定逻辑需要 处理,可关注此处。

由于弹窗打开的实际是一个页面,而不是一个组件,所以我们无法通过props的形式传递参数,有如下方式可以行进两个页面之间的通信:

  • 父页面通过URL参数的形式将参数传递给弹窗
  • 当弹窗内进行某些操作之后,可以通过uni.$emit的方式发送事件,父页面中通过uni.$on的形式接收事件和参数,达到通信的效果
  • 通过Vuex的形式共享变量

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

洛谷C++简单题练习day6—P1830 城市轰炸

day6--P1830 城市轰炸--1.26 习题概述 题目背景 一个大小为 nm 的城市遭到了 x 次轰炸&#xff0c;每次都炸了一个每条边都与边界平行的矩形。 题目描述 在轰炸后&#xff0c;有 y 个关键点&#xff0c;指挥官想知道&#xff0c;它们有没有受到过轰炸&#xff0c;如果有&a…

如果是全球统一流行前端框架那么这一定是公认的好框架

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 前端框架层出不穷&#xff0c;各种框架都有自己的特点和优势&#xff0c;但并不是所有的…

JavaWeb基础01-基本技术体系介绍和相关工具的安装

一、JavaWeb 1.概述 Web&#xff1a;全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站JavaWeb&#xff1a;是用Java技术来解决相关web互联网领域的技术栈 2.组成 &#xff08;1&#xff09;网页&#xff1a;展示数据&#xff08;前端技术&…

Vue深入学习2—虚拟DOM和Diff算法

1、snabbdom 是什么&#xff1f; snabbdom是“速度"的意思&#xff0c;源码只有200行&#xff0c;使用TS写的&#xff0c;让东西变得模块化 2、snabbdom 的 h 函数如何工作&#xff1f; h函数用于产生虚拟节点&#xff0c;同时也可以嵌套使用&#xff0c;得到虚拟DOM树&am…

行测-言语:2.语句表达

行测-言语&#xff1a;2.语句表达 1. 语句排序题 捆绑就是看两句话是不是讲的同一个内容&#xff0c;相同内容的句子应该相连。 1.1 确定首句 1.1.1 下定义&#xff08;……就是 / 是指&#xff09; A 1.1.2 背景引入&#xff08;随着、近年来、在……大背景 / 环境下&#…

拼图小游戏的界面和菜单的搭建

package Puzzlegame.com.wxj.ui;import javax.swing.*;public class GameJframe extends JFrame { //游戏主界面 public GameJframe(){//初始化界面initJFrame();//初始化菜单initJmenuBar();//让界面显示出来this.setVisible(true); }private void initJmenuBar() {//创建整个…

【动态规划】LeetCode-62. 不同路径

62. 不同路径。 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&am…

Java复习系列之阶段三:框架原理

1. Spring 1.1 核心功能 1. IOC容器 IOC&#xff0c;全称为控制反转&#xff08;Inversion of Control&#xff09;&#xff0c;是一种软件设计原则&#xff0c;用于减少计算机代码之间的耦合度。控制反转的核心思想是将传统程序中对象的创建和绑定由程序代码直接控制转移到…

3 - 主从复制结构|持久化|数据类型

主从复制结构&#xff5c;持久化&#xff5c;数据类型 主从复制 没有高可用功能命令行配置修改配置文件&#xff08;永久有效&#xff0c;重启了redis服务依然有效&#xff09; 配置带验证的主从复制主从从配置哨兵服务&#xff08;可实现高可用&#xff09;持久化RDB文件的使用…

亚马逊测评:卖家如何操作测评,安全高效(自养号测评)

亚马逊测评的作用在于让用户更真实、清晰、快捷地了解产品以及产品的使用方法和体验。通过买家对产品的测评&#xff0c;也可以帮助厂商和卖家优化产品缺陷&#xff0c;提高用户的使用体验。这进而帮助他们获得更好的销量&#xff0c;并更深入地了解市场需求。亚马逊测评在满足…

天正T20V9.0安装教程,附安装包,有不同专业和版本的安装包,轻松搞定安装,无套路获取资源

前言 天正是一款CAD的辅助工具&#xff0c;集成批处理命令、线型、字库、符号库等&#xff0c;会给设计人员带来很多方便&#xff0c;节约时间。天正软件包括暖通、给排水、电气、结构、建筑等&#xff0c;其中&#xff0c;天正建筑已成为建筑设计实际的绘图标准&#xff0c;为…

使用代码取大量2*2像素图片各通道均值,存于Excel文件中。

任务是取下图RGB各个通道的均值及标签&#xff08;R, G&#xff0c;B&#xff0c;Label&#xff09;,其中标签由图片存放的文件夹标识。由于2*2像素图片较多&#xff0c;所以将结果放置于Excel表格中&#xff0c;之后使用SVM对他们进行分类。 from PIL import Image import os …

怎么隐藏磁盘或U盘分区?

隐藏分区需求确实存在&#xff01; 某用户将自己的U盘驱动器分为两个分区&#xff0c;一个是可引导的活动主分区&#xff0c;另一个分区包含服务包和其他用于技术支持的内容&#xff0c;他一直被以下两个问题所困扰&#xff1a; 是否可以隐藏U盘分区&#xff1f; 如果想更改内…

故障注入测试:提高系统可靠性

故障注入测试是一种用于评估系统鲁棒性和容错性的测试方法&#xff0c;它的主要目标是模拟系统中可能发生的故障&#xff0c;并评估系统在面对这些故障时的表现。以下是故障注入测试的主要特点&#xff1a; 模拟真实环境&#xff1a; 故障注入测试努力模拟真实环境中可能发生的…

CHS_07.2.2.4_3+调度算法:多级队列调度算法

CHS_07.2.2.4_3调度算法&#xff1a;多级队列调度算法 多级对列调度算法 接下来 多级对列调度算法 看一个图你就明白了 如果一个系统采用多级对列调度算法 那么 这个系统会按照进程的类型设置多个对列 并且给不同的对列设置不同的优先级 举个例子 分为系统进程 交互式进程以…

Java面试题(6)

28.创建线程池有哪几种方式 newFixedThreadPool(int nThreads) &#xff1a;创建一个固定长度的线程池&#xff0c;如果有线程发生错误而结束&#xff0c; 线程池会补充一个新线程。 newCachedThreadPool() &#xff1a;创建一个可缓存的线程池&#xff0c;会自动回收和创建空…

spring cloud之分布式事务

写在前面 1&#xff1a;分布式事务介绍 参考MySQL之分布式事务 。 2&#xff1a;seata实战 架构图&#xff1a; 可以看到seata在这里作为协调者的角色&#xff0c;协调所有事务的提交以及回滚&#xff0c;其中seata使用MySQL存储每个分支事务的执行状态信息&#xff0c;以…

webassembly003 whisper.cpp的main项目-1

参数设置 /home/pdd/le/whisper.cpp-1.5.0/cmake-build-debug/bin/main options:-h, --help [default] show this help message and exit-t N, --threads N [4 ] number of threads to use during computation-p N, --processors …

使用css将文字在水平线中显示

方法一&#xff1a; 1.效果图 2.html <!-- <div class"line">第三方登录</div> --> 3.css /* 让文字在水平线中显示 */.line {display: flex;flex-direction: row;color: #ccc;font-size: 18px;font-weight: bolder; }.line:before, .line:aft…

Servlet API

Servlet的API就是一组类和方法 其中主要的三个类有 HttpServlet HttpServletRequest HttpServletResponse HttpServlet 这是编写Servlet代码用到的核心类 通过继承这个类 并重新写其中的方法 让tomcat去调用到这里的逻辑 方法名称调用时机init在HttpServlet实例化之后被调用…