uniapp 使用subNVue原生子窗体显示弹框或悬浮框

这篇具有很好参考价值的文章主要介绍了uniapp 使用subNVue原生子窗体显示弹框或悬浮框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果展示

在uniapp中,我们可以使用subNVue原生子窗体来解决web-view等原生页面中弹框无法显示的问题。

subNVue原生子窗体是uniapp提供的一种原生组件,可以在uniapp中嵌入原生页面,并且可以与uniapp页面进行通信。我们可以在原生页面中使用uniapp提供的API来与uniapp页面进行通信,从而实现弹框等功能。

uniapp悬浮窗口,uni-app,前端,vue.js

效果如图,显示在右下角的专属福利弹窗,不挂载在当前页面,挂载在全局。

使用步骤

在创建.nvue后缀文件,编写原生vue组件

在页面目录下新建专门存放原生子窗体的文件夹,subNVue是使用原生子窗体的vue页面

uniapp悬浮窗口,uni-app,前端,vue.js

<template>
	<view class="living-box">
		<image @click="jump" class="living-img" src="https://oss-emcsprod-public.modb.pro/modb_imgs/point/reward-dialog.png"></image>
        <i class="iconfont icon-guanbi4 c3" @click.stop="closeRewardView"></i>
        <image @click.stop="closeRewardView" class="close-img" src="https://oss-emcsprod-public.modb.pro/modb_imgs/point/guanbi4.png"></image>
	</view>
</template>
<script>
	import { mapGetters, mapActions, mapMutations } from 'vuex'
	import { savepointmixin } from '@/mixins/savepointmixin.js'
	export default {
        data () {
            return {
                rewardShow:false,
                mdays: ['+5', '+10', '+15'],
                isRewardShow: false
            }
        },
		computed:{
            ...mapGetters(['userInfo']),
            ...mapActions(['getUser', 'isNewUser', 'isOldUserReturn']),
		},
		mixins:[savepointmixin],
		methods: {
			...mapMutations(['SetReward']),
            jump(){
                this.closeRewardView()
                uni.navigateTo({
					url: '/pages/task/task'
				})
            },
			closeRewardView() {
				const _subNVue = uni.getCurrentSubNVue()
				_subNVue.hide()
				this.SetReward('false')
			}
		}
	}
</script>
<style scoped>
    .living-box{
        width: 150rpx;
        height: 150rpx;
        z-index: 99;
        position: relative;
    }
    .living-img{
        width: 130rpx;
        height: 130rpx;
    }
    .close-img{
        width: 28rpx;
        height: 28rpx;
        position: absolute;
        top: 0;
        right: -2rpx;
}
</style>

在pages.json中"pages"中需要使用到subNvue的页面中配置

{
			"path": "pages/course/course",
			"style":{
				"app-plus":{
					"subNVues":[{
						"id": "course-reward", //唯一标识 
						"path": "pages/subNVue/reward",//页面路径不需要后缀",
                				"type": 'popup', //内置的特殊子窗体类型,弹出(popup)和导航(navigationBar)。  
                    一旦设置 type为navigationBar或 popup,position和dock 的值都会被忽略。
						"style": {
							"width": "150rpx",
							"height": "150rpx",
							"bottom": "240rpx",
							"right": "40rpx",
							"background": "transparent"
						}
					}]
				}
			}
}
参数设置
position    原生子窗体的排版位置,排版位置决定原生子窗体在父窗口中的定位方式。
"static",原生子窗体在页面中正常定位,如果页面存在滚动条则随窗口内容滚动;
"absolute",原生子窗体在页面中绝对定位,如果页面存在滚动条不随窗口内容滚动;
"dock",原生子窗体在页面中停靠,停靠的位置由dock属性值决定。 默认值为"absolute"。
dock    原生子窗体的停靠方式,仅当原生子窗体 "position" 属性值设置为 "dock" 时才生效,可取值:"top",原生子窗体停靠则页面顶部;"bottom",原生子窗体停靠在页面底部;"right",原生子窗体停靠在页面右侧;"left",原生子窗体停靠在页面左侧。 默认值为"bottom"。
mask    原生子窗体的遮罩层,仅当原生子窗体 "type" 属性值设置为 "popup" 时才生效,可取值: rgba格式字符串,定义纯色遮罩层样式,如"rgba(0,0,0,0.5)",表示黑色半透明;
width   原生子窗体的宽度,支持百分比、像素值,默认为100%。未设置width属性值时,可同时设置left和right属性值改变窗口的默认宽度。
height  原生子窗体的高度,支持百分比、像素值,默认为100%。 当未设置height属性值时,优先通过top和bottom属性值来计算原生子窗体的高度。
top     原生子窗体垂直向下的偏移量,支持百分比、像素值,默认值为0px。 未设置top属性值时,优先通过bottom和height属性值来计算原生子窗体的top位置。
bottom  原生子窗体垂直向上偏移量,支持百分比、像素值,默认值无值(根据top和height属性值来自动计算)。 当同时设置了top和height值时,忽略此属性值; 当未设置height值时,可通过top和bottom属性值来确定原生子窗体的高度。
left    原生子窗体水平向左的偏移量,支持百分比、像素值,默认值为0px。 未设置left属性值时,优先通过right和width属性值来计算原生子窗体的left位置。
right   原生子窗体水平向右的偏移量,支持百分比、像素值,默认无值(根据left和width属性值来自动计算)。 当设置了left和width值时,忽略此属性值; 当未设置width值时,可通过left和bottom属性值来确定原生子窗体的宽度。
margin  原生子窗体的边距,用于定位原生子窗体的位置,支持auto,auto表示居中。若设置了left、right、top、bottom则对应的边距值失效。
zindex  原生子窗体的窗口的堆叠顺序值,拥有更高堆叠顺序的窗口总是会处于堆叠顺序较低的窗口的前面,拥有相同堆叠顺序的窗口后调用show方法则在前面。
动画方式
slide-in-right  slide-out-right     新窗体从右侧进入
slide-in-left   slide-out-left  新窗体从左侧进入
slide-in-top    slide-out-top   新窗体从顶部进入
slide-in-bottom     slide-out-bottom    新窗体从底部进入
fade-in     fade-out    新窗体从透明到不透明逐渐显示
zoom-out    zoom-in     新窗体从小到大缩放显示
zoom-fade-out   zoom-fade-in    新窗体从小到大逐渐放大并且从透明到不透明逐渐显示
pop-in  pop-out     新窗体从左侧进入,且老窗体被挤压而出
none    none    无动画

通过获取subNVue实例的方式来设置子窗体样式

在mixins中新建一个submixin.js
uniapp悬浮窗口,uni-app,前端,vue.js

showRewardOrNot(subId) {
			let _rewardType = uni.getStorageSync('rewardType')
			let _userInfo = this.userInfo 
			if (_rewardType != 'false'){
				const _sub = uni.getSubNVueById(subId + '-reward')
				_sub && _sub.show()
			}else{
				const _sub = uni.getSubNVueById(subId + '-reward')
				_sub && _sub.hide()
			}
},

在需要展示的页面,执行showRewardOrNot方法文章来源地址https://www.toymoban.com/news/detail-731981.html

<script>
	import { submixin } from '@/mixins/submixin.js'
	export default {
		mixins:[submixin],
		onShow() {
			this.showRewardOrNot('course')
		},
	}
</script>

到了这里,关于uniapp 使用subNVue原生子窗体显示弹框或悬浮框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Uniapp】高德地图的接入、定位、自定义标点与信息窗体使用

    因为公司的业务需求,需要实现一个接入高德地图的数据大屏,并根据坐标实现地图标点渲染,自定义信息窗体,点击定位等功能。查阅高德地图官方文档时发现使用的是原生 JavaScript ,且网上 uniapp 接入使用的教程较少,我自己摸索之后解决了不少问题,欢迎大佬补充纠正

    2024年02月11日
    浏览(46)
  • selenium+python:点击元素、alert弹框、鼠标操作(左键点击、右键点击、双击、鼠标悬浮)、下拉选项框、窗口切换等操作的处

    driver=webdriver.Chrome() driver.maximize_window() driver.get(\\\"https://www.baidu.com/\\\") 在进行页面操作时,需要用鼠标进行左键点击、右键点击、双击、鼠标悬浮(比如鼠标移到某个位置就会出现一些元素)、鼠标拖动等操作,这时需要导入ActionChains模块 perform() 执行所有ActionChains 中存储的行为

    2024年02月05日
    浏览(69)
  • 使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章

    今天继续研究C#的WinForm的显示动画效果。 上次我们实现了无边框窗体的显示动画效果(见博文:基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章 ),这次介绍的是未在任务栏托盘中窗体的显示隐藏动画效果的实现代码。 1、 项目目录; 下面是项目目录,由基本

    2024年02月14日
    浏览(39)
  • uniapp android底部弹框

    uniapp android底部弹框,带有动画效果

    2024年02月14日
    浏览(38)
  • Unity悬浮显示提示内容

    在编写unity时,需要实现鼠标在某一个按钮上时,就显示其子物体中对应的下拉菜单,为此编写了一个公共类,对于需要悬浮显示的控件均可挂载此类。代码如下: 该类的应用场景还可以放在图标类型的功能按钮上,悬浮在功能按钮上时功能按钮的名称,方便区分按钮的功能

    2024年02月13日
    浏览(40)
  • echarts 使用地图,设置背景图片和高亮图片,点击实现高亮显示,更换散点图图片,高亮散点图形,3D悬浮效果展示地图,集成Vue组件

    先看下   需要实现的效果: 第一步 需准备需要的插件  1  注意新版 echarts 的引入方式为:  import * as echarts from \\\'echarts\\\',这里我把 echarts 直接挂载到了Vue上,本项目使用echarts比较多,这样的话很方便,也可以在需要echarts的模块按需引入        在main.js中添加以下代码:

    2024年02月10日
    浏览(59)
  • uniapp 添加定位权限及弹出权限弹框

    背景: Android 10 获取当前连接wifi 的名称,老是返回 unkonw null ,原因是没有获取到定位权限,打开定位权限后就可以获取。 Android 10 以后,获取定位权限需要在 manifest.json 中添加如下: 添加上如上权限之后,查看应用的权限,定位显示询问,还是没有获取到定位权限。 弹出

    2024年02月11日
    浏览(34)
  • uniapp 悬浮窗-任意界面 Ba-FloatWinWeb

    简介(下载地址) Ba-FloatWinWeb 是一款支持自定义任意界面的悬浮窗插件。采用webview方式,同时支持本地、网络地址;自带几种界面,可直接使用。 支持显示、更新、隐藏 支持记录显示位置 支持拖动 支持监听点击事件 支持自动申请、判断悬浮窗权限 支持手动申请、判断悬

    2024年02月07日
    浏览(39)
  • uniapp悬浮图标支持拖动支持微信小程序

    最近改了个UI,按钮放哪都不合适,看到别人都是用悬浮按钮,于是我自己也搞了一个,随心所欲存放位置,的确要比固定的好看的多,下面的是一个截图,代码放在下面自取 支持滑动、点击 完整代码片段:

    2024年02月11日
    浏览(51)
  • uniapp开发微信小程序底部地区选择弹框

    个人项目地址: SubTopH前端开发个人站 (自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面) SubTopH前端开发个人站 https://subtop.gitee.io/subtoph.github.io/#/home 实现效果 功能介绍: 支持默认值直接显示

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包