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

注释很详细,直接上代码

上一篇

新增内容:
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.rhkb.cn/news/276517.html

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

相关文章

java-类和对象

1.面向对象 1.1 区分面向对象与面向过程 举个例子: 在传统的洗衣服过程中,需要经历防水,放衣服,放洗衣粉,搓洗,换水......多个步骤,每个过程都是不可或缺的,关注的是过程. 而现在的洗衣服过程,就需要我们把衣服,洗衣粉放入洗衣机,启动洗衣机即可,并不需要关注洗衣机是如何运行…

React-嵌套路由

1.概念 说明&#xff1a;在一级路由中又内嵌了其他路由&#xff0c;这种关系就叫做嵌套路由&#xff0c;嵌套至一级路由内的路由又称作二级路由。 2.实现步骤 说明&#xff1a;使用childen属性配置路由嵌套关系&#xff0c;使用<Outlet/>组件配置二级路由渲染的位置。…

事务【MySQL】

事务的概念 引入 在 A 转账 100 元给 B 的过程中&#xff0c;如果在 A 的账户已经减去了 100 元&#xff0c;B 的账户还未加上 100 元之前断网&#xff0c;那么这 100 元将会凭空消失。对于转账这件事&#xff0c;转出和转入这两件事应该是绑定在一起的&#xff0c;任意一个动…

B3620 x 进制转 10 进制(详解)

题目 思路 八进制数567怎么转化为十进制数。首先八进制就是逢八进一&#xff0c;也就是说这里面最大的数也就7&#xff0c;没有≥8的数。下面我们就讲一下567怎么转化为十进制&#xff1a;首先7是个位&#xff0c;可以直接写成十进制的7&#xff0c;6是十位&#xff0c;它是通…

Java项目企业设备管理系统

java项目企业设备管理系统javaweb项目ssm框架项目 运行环境:idea/eclipse tomcat jdk mysql navicat 系统用户分为员工和管理员两类用户。两类用户都可以进行系统的登录&#xff0c;虽然进入的系统主页结构相似&#xff0c;但是在功能上有不同。员工的密码可以自己进入系统后…

城乡居民基本医疗信息管理系统|基于Springboot的城乡居民基本医疗信息管理系统设计与实现(源码+数据库+文档)

城乡居民基本医疗信息管理系统目录 目录 基于Springboot的城乡居民基本医疗信息管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、病例管理 2、医院资讯信息管理 3、医院资讯类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

蓝桥杯历年真题省赛java b组2016年第七届

一、题目 取球博弈 两个人玩取球的游戏。 一共有N个球&#xff0c;每人轮流取球&#xff0c;每次可取集合{n1,n2,n3}中的任何一个数目。 如果无法继续取球&#xff0c;则游戏结束。 此时&#xff0c;持有奇数个球的一方获胜。 如果两人都是奇数&#xff0c;则为平局。 假设双…

BugKu刷题日记(web)一

文章目录 lfi题目页面恶意构造解题思路 Whois题目页面恶意构造解题思路 lfi 来源&#xff1a;https://ctf.bugku.com/challenges/detail/id/429.html 漏洞类型&#xff1a;文件包含漏洞 同类型BugKu&#xff1a;baby ifi、baby ifi 2 题目页面 恶意构造 http://example.com/…

程序人生——Java数组和集合使用建议(1)

目录 引出数组和集合建议60&#xff1a;性能考虑&#xff0c;数组是首选建议61&#xff1a;若有必要&#xff0c;使用变长数组建议62&#xff1a;警惕数组的浅拷贝 建议63&#xff1a;在明确的场景下&#xff0c;为集合指定初始容量建议64&#xff1a;多种最值算法&#xff0c;…

C++ 作业 24/3/14

1、成员函数版本实现算术运算符的重载&#xff1b;全局函数版本实现算术运算符的重载 #include <iostream>using namespace std;class Test {friend const Test operator-(const Test &L,const Test &R); private:int c;int n; public:Test(){}Test(int c,int n…

算法的时间复杂度和空间复杂度(数据结构)

本博客讲解算法的时间复杂度和空间复杂度的来源及定义&#xff0c;时间复杂度的表示及练习。空间复杂度的计算会在后续博客讲解 算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏&#xff0c;一般是从时…

DHCP-SNOOPING-嗅探/窥探

DHCP-SNOOPING 私接设备了&#xff0c;非终端收到了报文 所有接口设置为非信任&#xff0c;然后单独配置其中一个接口为信任

ansible 部署FATE集群单边场景

官方文档&#xff1a; https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_FATE_manual.md https://github.com/FederatedAI/AnsibleFATE/blob/main/docs/ansible_deploy_two_sides.md gitee详细文档&#xff1a; docs/ansible_deploy_one_side.md…

第N4周:中文文本分类-Pytorch实现

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/rbOOmire8OocQ90QM78DRA) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** # -*- coding: utf-8 -…

数据集成工具 ---- datax 3.0

1、datax: 是一个异构数据源离线同步工具&#xff0c;致力于实现关系型数据库&#xff08;mysql、oracle等&#xff09;hdfs、hive、hbase等各种异构数据源之间的数据同步 2、参考网址文献&#xff1a; https://github.com/alibaba/DataX/blob/master/introduction.mdhttps:/…

Redis:持久化、线程模型、大 key

Redis持久化方式有什么方式&#xff1f; Redis 的读写操作都是在内存中&#xff0c;所以 Redis 性能才会高&#xff0c;但是当 Redis 重启后&#xff0c;内存中的数据就会丢失&#xff0c;那为了保证内存中的数据不会丢失&#xff0c;Redis 实现了数据持久化的机制&#xff0c…

【CenterFusion】CenterFusion网络架构概述

一、CenterFusion 概述 这个项目&#xff0c;重点研究毫米波雷达和相机传感器融合的方法利用毫米波雷达传感器数据和相机传感器数据进行 3D 目标检测并在 NuScenes 数据集上面进行评估CenterFusion 网络架构&#xff1a; CenterFusion 网络架构首先利用全卷积骨干网提取目标物…

【ArcGIS】栅格数据进行标准化(归一化)处理

栅格数据进行标准化&#xff08;归一化&#xff09;处理 方法1&#xff1a;栅格计算器方法2&#xff1a;模糊分析参考 栅格数据进行标准化(归一化)处理 方法1&#xff1a;栅格计算器 栅格计算器&#xff08;Raster Calculator&#xff09; 计算完毕后&#xff0c;得到归一化…

谷粒商城——分布式基础(全栈开发篇第一部分)

文章目录 一、服务治理网路数据支撑日志处理ELK应用监控集成工具开发工具 二、环境创建1、虚拟机创建2、虚拟机安装docker等1. 安装docker1. 配置阿里docker3.docker安装mysql错误 4、docker安装redis 3、软件1.Maven 阿里云镜像1.8jdk2、idea lombokmybatisX &#xff0c;3、 …

[LVGL]:MACOS下使用LVGL模拟器

如何在MACOS下使用lvgl模拟器 1.安装必要环境 brew install sdl2查看sdl2安装位置&#xff1a; (base) ➜ ~ brew list sdl2 /opt/homebrew/Cellar/sdl2/2.30.1/bin/sdl2-config /opt/homebrew/Cellar/sdl2/2.30.1/include/SDL2/ (78 files) /opt/homebrew/Cellar/sdl2/2.3…