微信小程序(五十二)开屏页面效果

注释很详细,直接上代码

上一篇

新增内容:
1.使用控件模拟开屏界面
2.倒计时逻辑
3.布局方法
4.TabBar隐藏复现

源码:

components/openPage/openPage.wxml

<view class="openPage-box"><image src="{{imagePath}}" mode="aspectFill"></image><view class="openPage-header"><!-- 跳过按钮 --><view class="openPage-btn" bindtap="skipOpenPage">跳过 {{second}}s</view></view><!-- 创意指导:拼夕夕 --><view class="openPage-gif"><image src="{{gifUrl}}" mode="aspectFill"/></view>
</view>

components/openPage/openPage.wxss

/* 切记:最外面的盒子不能直接用百分之的形式 */
.openPage-box {width: 100vh;height: 100vh;
}.openPage-box>image {width: 100%;height: 100%;
}/* 因为图片已经占据了所有位置,而我们需要让按钮悬浮在图片左上角,
所以需要使用absolute */
.openPage-header {position: absolute; left:40rpx;top: 80rpx;
}.openPage-btn {font-size: 20px;/* 调大点提高用户舒适度,你也不想有被开屏广告支配的感觉吧 */color: white;border: 1px solid white;padding: 2px 5px;border-radius: 12px;
}.openPage-gif{position: absolute;left: 30%;top: 40%;
}.openPage-gif>image{width: 300rpx;height: 300rpx;
}

components/openPage/openPage.js

Component({/*** 组件的属性列表*/properties: {//传入的数据imagePath: {type: String},second: {type: Number}},/*** 组件的初始数据*/data: {gifUrl:'https://wimg.588ku.com/gif620/21/09/23/e14212e58c7e5da94ef8fca48ecd202e.gif',timer: null},lifetimes: {created: function () {},attached: function () {//在JavaScript中,this关键字的指向是动态的,取决于函数的调用方式。//比如普通调用方式里面的this则是这个函数,箭头函数则指的是外面的//如果里面不需要调用该函数这个this对象而只是需要访问外面的this对象则可以使用箭头函数//在某些情况下,为了在回调函数或异步操作中能够访问到外部的this对象并且访问这个函数的this对象,//可以将外部的this对象赋值给一个变量,通常命名为that或selflet that = this;//timer是一个表示定时器的变量,其类型是number//在JavaScript中,setInterval函数会返回一个唯一的定时器标识符,//可以通过这个标识符来清除定时器,即使用clearInterval(timer)来停止定时器的执行const timer = setInterval(function () {//因为这个地方相当于嵌套了一层let nowSecond = --(that.data.second);//时间自减1console.log(nowSecond);if (nowSecond <= 0) {//计时到0则关闭开屏控件clearInterval(timer);//关闭计时器that.hideOpenPage();//隐藏开屏页面}that.setData({//赋值当前秒数(触发视图更新)second: nowSecond,//将计时器变量赋值给页面变量timer,方便在其他函数内关闭该计时器timer: timer});}, 1000);//延时1s}},/*** 组件的方法列表*/methods: {//隐藏开屏控件hideOpenPage: function () {//触发hide的事件,在`index.wxml`内容里面设置了bind:hide="onMyEvent",//则调用`index.js`里面的onMyEvent方法this.triggerEvent("hide");},//跳过开屏页面skipOpenPage: function () {this.hideOpenPage();//先隐藏开屏控件let timer = this.data.timer;//获取计时器变量if (timer) {//避免计时器还没初始化但用户已经点击跳过的情况(感觉只有yyds的李跳跳才能做到了)clearInterval(timer);//关闭计时器}}}
})

components/openPage/openPage.json

{"component": true,"usingComponents": {}
}

index.wxml

<openPage wx:if="{{openPageFlag}}" imagePath="{{url}}" second="{{5}}" bind:hide="onMyEvent"></openPage><!-- 图个方便咱样式全写行内了(毕竟这也不是重点) --><view style=" border-radius: 30rpx; "><view style="padding:160rpx 0 0 0;display: flex;flex-direction: column; align-items: center;"><view><image src="{{userInfo.avatar}}" mode="aspectFill" style="width: 100rpx ;height: 100rpx; border-radius: 50%;" /></view><view style="margin-bottom: 20rpx;"><text style="color: pink;">{{userInfo.nickName}}</text></view></view></view>

index.wxss

page{background-image: url(https://pic3.zhimg.com/v2-a76bafdecdacebcc89b5d4f351a53e6a_r.jpg?source=1940ef5c);background-size: 100% auto;background-repeat: no-repeat;
}

index.js

Page({data: {userInfo:{//这里是默认的用户头像昵称信息avatar:'https://profile-avatar.csdnimg.cn/06d540e9389b45649e01ca3798fdb924_m0_73756108.jpg',//csdn整来的头像链接😎😎😎nickName:'眨眼睛'},//开屏控件是否存在标记openPageFlag: true,//开屏广告图片内容url:'https://ts1.cn.mm.bing.net/th/id/R-C.a4616e92a020b344cec039516ac755d3?rik=1pgZKObA0CxALA&riu=http%3a%2f%2fsjbz.fd.zol-img.com.cn%2ft_s1080x1920c%2fg5%2fM00%2f00%2f02%2fChMkJ1fJUwuIUssCAA39sthJrGMAAU9nwNNNewADf3K734.jpg&ehk=oX398mB4NzTaBxvWpwJIR3bS7NzghbGRvY4qp7jJPuE%3d&risl=&pid=ImgRaw&r=0'},//第一次加载这个页面触发一次,也就是开屏内容展现的时候onLoad: function () {//在有TabBar的情况下默认是不会隐藏的,所以我们手动隐藏一下wx.hideTabBar();},//当该控件隐藏时触发onMyEvent: function () {//打印关闭console.log("开屏控件关闭!!!");this.setData({//将开屏控件的存在标记设为否openPageFlag: false});//显示TabBar(前面隐藏了)wx.showTabBar();}
})

index.json

{"usingComponents": {"openPage": "/components/openPage/openPage"},"navigationStyle": "custom"
}

效果演示:

在这里插入图片描述

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

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

相关文章

20个Python中列表(list)最常用的方法和函数。

本篇文章中,我们分别介绍10个Python中列表(list)最常用的方法和函数。 列表方法示例 1. 创建空列表和使用 append() 方法 # 创建一个空列表 my_list = []# 使用 append() 方法在列表末尾添加元素 my_list.append(5) my_list.append(10) print("After append:",…

离线数仓建设

一.数据仓库分层 ODS(Operation Data Store)层&#xff1a;原始数据层&#xff0c;存放加载原始日志、数据&#xff0c;数据保持原貌不做处理。 DWD(Data warehouse detail)层&#xff1a;对ODS层数据进行清洗&#xff08;去除空值&#xff0c;超过极限范围的数据&#xff09;、…

三维不同坐标系下点位姿态旋转平移变换

文章目录 前言正文计算方法思路Python实现总结前言 本文主要说明以下几种场景3D变换的应用: 3D相机坐标系下长方体物体,有本身坐标系,沿该物体长边方向移动一段距离,并绕长边轴正旋转方向转90度,求解当前物体中心点在相机坐标系下的位置和姿态多关节机器人末端沿工具坐标…

介绍Android UI绘制过程以及注意事项

Android UI绘制是一个复杂的过程&#xff0c;它涉及到多个步骤&#xff0c;从测量&#xff08;measure&#xff09;到布局&#xff08;layout&#xff09;再到绘制&#xff08;draw&#xff09;。以下是这个过程的简要介绍以及一些注意事项&#xff1a; 1. **测量&#xff08;…

计算机网络-网络应用服务器(四)

1.Samba服务器&#xff1a; Samba是Linux上实现和Windows系统局域网上共享文件和打印机的一种通信协议&#xff0c;由服务器及客户端程序构成。支持SMB/CIFS协议&#xff0c;实现共享资源。最主要的一个配置文件smb.conf&#xff0c;可以使用vi编辑器修改。守护进程&#xff1a…

STM32 利用FlashDB库实现在线扇区数据管理不丢失

STM32 利用FlashDB库实现在线扇区数据管理不丢失 &#x1f4cd;FalshDB地址:https://gitee.com/Armink/FlashDB ✨STM32没有片内EEPROM这样的存储区&#xff0c;虽然有备份寄存器&#xff0c;仅可以实现对少量数据的频繁存储&#xff0c;但是依赖备份电源&#xff08;BAT引脚&a…

美国签证|附面签相关事项√

小伙伴最近都忙着办签证吧&#xff01;但是需要注意的是&#xff0c;美国的签证跟其他任何国家的签证不同&#xff0c;并不是办理了就一定拿得到&#xff0c;据说概率是50%左右。所以办理美国签证&#xff0c;不要太着急啦&#xff01;先来了解一下美国签证的相片该怎么拍叭 ✅…

题目 2073: [STL训练]亲和串

题目描述: 人随着岁数的增长是越大越聪明还是越大越笨&#xff0c;这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考&#xff0c;因为他在很小的时候就知道亲和串如何判断了&#xff0c;但是发现&#xff0c;现在长大了却不知道怎么去判断亲和串了&#xff0c;…

RocketMQ的事务消息流程

什么是事务消息&#xff1f; 事务消息是一种在发送方和接收方之间保证消息传递的一致性和可靠性的消息传递机制。在消息发送过程中&#xff0c;生产者可以将消息发送到消息队列&#xff0c;但不会立即被消费者接收和处理。相反&#xff0c;消息会先进入一种“准备”状态&#x…

用chatgpt写insar地质灾害的论文,重复率只有1.8%,chatgpt4.0写论文不是梦

突发奇想&#xff0c;想用chatgpt写一篇论文&#xff0c;并看看查重率&#xff0c;结果很惊艳&#xff0c;说明是确实可行的&#xff0c;请看下图。 下面是完整的文字内容。 InSAR (Interferometric Synthetic Aperture Radar) 地质灾害监测技术是一种基于合成孔径雷达…

【JavaScript】JavaScript 变量 ① ( JavaScript 变量概念 | 变量声明 | 变量类型 | 变量初始化 | ES6 简介 )

文章目录 一、JavaScript 变量1、变量概念2、变量声明3、ES6 简介4、变量类型5、变量初始化 二、JavaScript 变量示例1、代码示例2、展示效果 一、JavaScript 变量 1、变量概念 JavaScript 变量 是用于 存储数据 的 容器 , 通过 变量名称 , 可以 获取 / 修改 变量 中的数据 ; …

第十五届蓝桥杯模拟赛(第三期)

大家好&#xff0c;我是晴天学长&#xff0c;本次分享&#xff0c;制作不易&#xff0c;本次题解只用于学习用途&#xff0c;如果有考试需要的小伙伴请考完试再来看题解进行学习&#xff0c;需要的小伙伴可以点赞关注评论一波哦&#xff01;蓝桥杯省赛就要开始了&#xff0c;祝…

【DimPlot】【FeaturePlot】使用小tips

目录 DimPlot函数参数解析 栅格化点图 放大 ggplot2 图例的点&#xff0c;修改图例的标题 FeaturePlot函数参数解析 调整FeaturePlot颜色 分组绘制featureplot 随手笔记&#xff0c;持续更新中。。。 Reference DimPlot函数参数解析 object: 一个Seurat对象&#xff0c;…

工作纪实46-关于微服务的上线发布姿势

蓝绿部署 在部署时&#xff0c;不需要将旧版本的服务停掉&#xff0c;而是将新版本与旧版本同时运行&#xff0c;新版本测试无误之后再将旧版本停掉。这样可以避免再升级的过程中如果失败服务不可用的问题&#xff0c;因为同时部署了两个版本的程序&#xff0c;使得硬件资源是…

【项目笔记】java微服务:黑马头条(day01)

文章目录 环境搭建、SpringCloud微服务(注册发现、服务调用、网关)1)课程对比2)项目概述2.1)能让你收获什么2.2)项目课程大纲2.3)项目概述2.4)项目术语2.5)业务说明 3)技术栈4)nacos环境搭建4.1)虚拟机镜像准备4.2)nacos安装 5)初始工程搭建5.1)环境准备5.2)主体结构 6)登录6.1…

Ubuntu用扩展分区加载home目录步骤

如果你想要将新的磁盘挂载到默认的 /home 目录下&#xff0c;可以按照以下步骤进行操作&#xff1a; 创建挂载点&#xff1a; 首先&#xff0c;确保新磁盘已连接并识别。然后&#xff0c;创建一个临时挂载点&#xff0c;以便将新磁盘挂载到该点。sudo mkdir /mnt/new_home挂载磁…

JavaScript中的Set和Map:理解与使用

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

C++:类和对象(三)——拷贝构造函数和运算符重载

目录 一、拷贝构造函数 1.概念 2.特性 二、赋值运算符重载 1.运算符重载 2.赋值运算符重载 &#xff08;1&#xff09;注意的点&#xff1a; &#xff08;2&#xff09;赋值运算符不允许被重载为全局函数&#xff0c;只能重载为类的成员函数 &#xff08;3&#xff09;…

代码随想录算法训练营day32

题目&#xff1a;122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II 参考链接&#xff1a;代码随想录 122.买卖股票的最佳时机II 思路&#xff1a;本题我一开始想到的是参考前面的摆动序列&#xff0c;先用坡度图思考&#xff0c;我们要返回最大利润&#xff0c;即要做…

C++ 字符串OJ

目录 1、14. 最长公共前缀 2、 5. 最长回文子串 3、 67. 二进制求和 4、43. 字符串相乘 1、14. 最长公共前缀 思路一&#xff1a;两两字符串进行比较&#xff0c;每次比较过程相同&#xff0c;可以添加一个函数辅助比较&#xff0c;查找最长公共前缀。 class Solution { pu…