从零开始学习制作H5应用——V3.0版,loading,背景音乐及自动切换

我们的第一个H5应用经过V1.0V2.0的制作,已经越来越惊艳了,这一次,我们继续来给她梳妆打扮,让她更漂亮。

任务

1、加入页面加载完成前的loading动画,提升用户体验;

2、加入背景音乐,自动播放,并添加控制图标,可以控制播放与暂停

3、让页面实现自动切换。

实现

第一步:Loading动画

index.html


……
<body>
<div class=‘loader loader--spinningDisc‘></div>
<div id="pages">
……

style.css


.loader {
    margin: 10em auto;
    z-index:10000;
}

.loader--spinningDisc {
    border: solid 0.5em #9b59b6;
    border-right-color: transparent;
    border-left-color: transparent;
    padding: 0.5em;
    width: 2em;
    height: 2em;
    border-radius: 50%;
    background: #3498db;
    background-clip: content-box;
    animation: spinDisc 1.5s linear infinite;
}
@keyframes spinDisc {
    50% {
        border-top-color: #3498db;
        border-bottom-color: #3498db;
        background-color: #2ecc71;
    }
    100% {
        transform: rotate(1turn);
    }
}

效果:

我们让它在页面加载完成之后就自动隐藏,并且让下面的箭头在页面完成加载后再出现:

myfn.js


window.onload = function(){
    $(".loader").css("z-index","1");
    $(".upicon").css("z-index","1000");
}

style.css

.upicon {
  width: 60px;
  height: 60px;
  position: absolute;
  left: 50%;
  bottom: 20px;
  margin-left: -30px;
  z-index: 1; //注意这里与之前的不同
}

好了,loading动画就处理好了。

第二步:背景音乐

我们先要准备好背景音乐的素材,最好是纯音乐的,并且经过剪切的,因为是移动端,既要考虑流量问题,也要考虑到我们整个应用的时长,并且充分利用循环播放的特性。

由于移动端浏览器基本上都是支持H5的,而我们做的也是基于H5的应用,所以我们直接采用H5的标签来在页面中插入音乐。

index.html


……
<audio src="1.mp3" autoplay="autoplay" id="audio" hidden="hidden"></audio>

……

再次刷新浏览器,便可听到我们插入的悦耳的音乐了。

现在,我们加入控制图标并在myfn.js里编写控制播放与暂停的功能。

我们准备两张png格式的图片,分别在音乐播放与暂停时来显示,如图:

在页面中加入一个ID为audioPlay的div,负责显示图片:

index.html

……
<audio src="1.mp3" autoplay="autoplay" id="audio" hidden="hidden"></audio>
<div id="audioPlay"></div>
……

style.css


#audioPlay {
  width:38px;
  height: 38px;
  background-image: url("imgs/music_play.png");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  position: absolute;
  top: 5%;
  right: 5%;
  z-index: 9999999;
}

效果如图:

然后我对myfn.js进行改造,将页面切换部分的代码封装为一个独立的功能函数,方便后面自动切换使用,为了避免与音乐控制按钮发生冲突,将页面切换监听事件绑定到.page之上。改造后的myfn.js全部代码如下:

myfn.js

$(function(){
    var curpage=1;
    var totalpage,nextpage,lastpage,nexttotalpage;
    totalpage = $(".page").length;
    nexttotalpage = totalpage + 1;

    window.onload = function(){
        $(".loader").css("z-index","1");
        $(".upicon").css("z-index","1000");
        initAudio("audio");
    }

    var audio;
    function initAudio(id){
        audio =  document.getElementById(id);
    }

    document.addEventListener(‘touchmove‘,function(event){
        event.preventDefault(); },false);

//控制音乐播放停止和音乐ico图标变换

    $(".page").swipeUp(function(){
        swichpage();
    })

    $("#audioPlay").on(‘click‘,function(){
        if(audio.paused){
            audio.play();
            this.style.backgroundImage="url(imgs/music_play.png)";
        }else{
            audio.pause();
            this.style.backgroundImage="url(imgs/music_pause.png)";
        }
    });

    function swichpage() {

//判断当前页是否为最后一页

        //获取总页数,以及总页数的+1后的序号,供后面for循环使用

        //如果是最后一页,显示第一页,并移除所有page上的所有css效果类,否则显示下一页,并移除上一页的切换动画效果
        if (curpage == totalpage) {
            for (var i = 1; i < nexttotalpage; i++) {
                $(".page" + i).removeClass("hide");
                $(".page" + i).removeClass("show");
                $(".page" + i).removeClass("pt-page-moveFromBottomFade");
            }
            $(".page1").addClass("show");
            $(".page1").addClass("pt-page-moveFromBottomFade");
            curpage = 1;
        } else {
            nextpage = curpage + 1;
            lastpage = curpage - 1;
            $(".page" + curpage).removeClass("pt-page-moveFromBottomFade");
            $(".page" + curpage).addClass("pt-page-moveToTopFade");
            $(".page" + curpage).removeClass("show");
            $(".page" + curpage).addClass("hide");
            $(".page" + nextpage).removeClass("hide");
            $(".page" + nextpage).addClass("show");
            $(".page" + nextpage).addClass("pt-page-moveFromBottomFade");
            $(".page" + lastpage).removeClass("pt-page-moveToTopFade");
            curpage = nextpage;
        }
    }
})
//the end

再次刷新浏览器,初始状态下音乐自动播放,并且控制按钮为亮色的,点击控制按钮后,音乐暂停播放,图标变为暗色,如下图:

第三步:自动切换

实现自动切换的原理其实就是一个典型的定时器功能,代码如下:

myfn.js

……
            curpage = nextpage;
        }
    }
  setInterval(function(){
        swichpage();
    },4000);
})
// the end

这样就实现了页面每四秒自动切换至下一页的功能。

好了,这一次的改造相对来说比较简单,V3.0版本就大功告成了。

时间: 2024-10-06 17:28:46

从零开始学习制作H5应用——V3.0版,loading,背景音乐及自动切换的相关文章

从零开始学习制作H5应用——V5.0:后悔机制,整理目录,压缩,模板化

经过前面四个版本的迭代,我们已经制作了一个从视觉和听觉上都很舒服的H5微场景应用,没有看过的请戳下面: V1.0--简单页面滑动切换 V2.0--多页切换,透明过渡及交互指示 V3.0--加入loading,music及自动切换 V4.0--加入文字并给文字加特效 但是,还没有完,这一次,我们将做一些十分重要的收尾工作,才能真正完成我们的第一个H5应用,所以,let's do it! 任务 1.加入后悔机制--页面上滑切换功能: 2.整理目录 3.压缩样式与脚本文件 4.模板化 分析 1.世上没

从零开始学习H5应用(1)——V1.0版,简单页面滑动切换效果

可曾看见过那些在微信上转疯了的H5神作?好生羡慕啊,那么从今天开始,我将从零开始学习制作H5应用,看看那么漂亮的页面是怎么样一步一步形成的. 准备 在学习制作H5应用之前,必须具备以下基础前提: HTML,CSS,JS基本编写与制作能力 了解了H5中的各种新特性 有一定的逻辑思维能力,可以将复杂任务通过分析简化为若干原子事件来处理 看得懂汉语,以及教程中出现的前端术语. 任务 这是本系列的第一篇,任务非常简单, 制作一个具有3张页面,每次只显示其中一张页面,当手指向上滑动设备屏幕时当前页面消失下

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增系统参数管理

欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 在V3.0版本的Web(Mvc.WebForm)与WinForm中我们新增了“系统参数管理”模块.系统参数管理的功能就非常广了,可以发挥我们的想象把所有可能的东西放在这儿定义,比如:系统的分页大小.系统的数据库类型.用户的访问限制等等一切可能的东西都可以在这儿定义,定义后通过框架提供的接口来使用即可.当然“系统参数”管理界面中有一些数据是系统生成的默认数据

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增查询引擎管理

欲了解V3.0版本的相关内容可查看下面的链接地址. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版本发布 RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录 在V3.0版本的Web(Mvc.WebForm)与WinForm中我们新增了“查询引擎管理”模块.主要分为两部分”查询引擎管理“与”查询引定义“.”查询引擎管理“主要是对整个系统的查询引擎定义进行分类管理,用户可以对整个系统所要用到的查询定义在这儿进行合理分类.在查询

TimesTen 数据库复制学习:16. 一个缓存组,复制,客户端自动切换的串烧实验

简介 这时一个集只读,AWT缓存组,Active Standby 复制,client auto failover为一体的集成实验. 整个过程来至于Doc ID 1359840.1, 本文基于此文档按照自己的环境重做了一遍,并更正了其中的小错误,增加了自己的理解. 本文省略了在Oracle端设置缓存组的过程,可以参见前面的文章. 搭建的环境为虚拟机 timesten-hol 上安装了两个TimesTen实例, 实例名分别为tt1122和ttnew, 分别驻留在端口53392(缺省)和55555 t

3、Kafka学习分享|快速入门-V3.0

Kafka学习分享|快速入门 这个教程假定你刚开始是新鲜的,没有现存的Kafka或者Zookeeper 数据.由于Kafka控制控制脚本在Unix和Windows平台不同,在Windows平台使用bin\windows\ 代替 bin/,并且更改脚本扩展名为.bat. 第一步:下载编码 下载0.10.2.0版本并且解压它. 第二步:启动服务器 Kafka使用Zookeeper,因此如果你没有Zookeeper server,你需要先启动a ZooKeeper server.你可以使用Kafka的

Git(进击学习:远程仓库操作)-V3.0

1.查看当前的远程仓库:git remote或git remote -v 2.添加远程仓库:git remote add [shortname] [url] git remote add pb git//github.com/pa/tic.git 现在可以用字符串 pb 指代对应的仓库地址了 3.查看远程仓库信息:git remote show [remote-name] git remote show origin 4.推送数据到远程仓库:git push [remote-name] [bra

从零开始制作H5应用(4)——V4.0,加入文字并给文字加特效

之前,我们分三次完成了我们第一个H5应用的三个迭代版本: V1.0--简单页面滑动切换 V2.0--多页切换,透明过渡及交互指示 V3.0--加入loading,music及自动切换 这已经是一个具有基本表达能力的版本了,但是,远远不够!因为,用户体验永远是第一位的,单纯的图片无法准确调动用户情绪,当然,除非是那些特别牛逼的照片,但那时不可多得的,所以我们必须配以适当的文案来对图片内容进行说明或者升华.并且,如果文字也有一些简单的特效而动起来,它们会更有生命力! 任务 在V3.0版的基础上给每张

从零開始制作H5应用(4)——V4.0,增加文字并给文字加特效

之前,我们分三次完毕了我们第一个H5应用的三个迭代版本号: V1.0--简单页面滑动切换 V2.0--多页切换,透明过渡及交互指示 V3.0--加入loading,music及自己主动切换 这已经是一个具有基本表达能力的版本号了.可是,远远不够!由于,用户体验永远是第一位的,单纯的图片无法准确调动用户情绪,当然,除非是那些特别牛逼的照片,但那时不可多得的,所以我们必须配以适当的文案来对图片内容进行说明或者升华.而且,假设文字也有一些简单的特效而动起来,它们会更有生命力! 任务 在V3.0版的基础