基于Zepto框架实现开启宝箱

简介: 基于Zepto框架实现开启宝箱

1.Zepto框架的优势

Zepto简单来说是一个轻量级的JS库。它的优势在于能减少下载和与运行时间,兼容大多数移动浏览器和主流桌面现代浏览器。而传统的js框架,为了兼容低级、高级浏览器,代码量较大、运行时间长。移动端浏览器功能差异较小,兼容问题不突出。传统js框架代码大,在移动端会造成终端流量加大、显示迟缓的情况。zepto还实现了jQuery的大部分功能,其功能也是十分强大的。


2.解析思路

联想到平时在玩游戏的时候弹出的一些宝箱,其打开过程无非就是单击宝箱的时候,宝箱摇晃。摇晃动画结束后,宝箱打开,出现获得的奖励。分析制作开启宝箱的实现细节

(1)使用 addClass 方法给宝箱添加相应的摇晃类;

(2)使用 setTimeout、removeClass、closest、find、addClass 等方法让原来的宝箱变为打开状态,并显示奖励模块,宝箱下面的文字在宝箱打开后消失。

Zepto的部分方法和事件如下:

图2.1 zepto方法和事件

 

3.制作过程

需要制作的是如下图3.1效果的宝箱开启图:

(1)首先当然是引入zepto.min.js文件。

(可以通过访问github地址:

https://github.com/madrobby/zepto下载到所需要的文件)

<script  type="text/javascript"  src="js/zepto.min.js"></script>

(2)利用h5实现百宝箱的的基础布局,再添加css样式进行调整。

<body ontouchstart="">

   <div>

     <div class="bg rotate"></div>

     <div class="open-has ">

       <h3><span>四川旅游学院</span>送你一个宝箱</h3>

       <h3>恭喜你,</br>成功领取<span></span>旅游百宝箱</h3>

       <div>

         <div class="chest-close show ">

           <div></div>

           <div>

            <i></i>

           </div>

         </div>

         <div class="chest-open ">

           <div class="mod-chest-cont open-cont">

            <div>

              <div>

                <div><img  src="img/chest-icon-zuan.png"></div> x 500

              </div>

              <div>

                <button>查看详情并提取</button>

              </div>

            </div>

           </div>

         </div>

       </div>

     </div>

     <div style="display:none">

       <h3>恭喜你,中奖了</h3>

       <div>

         <div class="chest-open show"></div>

       </div>

       <div>

         <button>查看领取详情</button>

       </div>

     </div>

   </div>

</body>

(3)利用动画效果和css实现背景光环的闪耀、宝箱左右摇摆后开启等动画效果。@keyframes里设置transform:rotate();控制动画暂停和运动可以用属性:animation-play-state:paused(暂停)、running(运动)。transform:shake实现动画的摆动,transform: move实现动画的移动。(代码过多,部分代码已删减)

@-webkit-keyframes rotate {

     0% {

         -webkit-transform:rotate(0deg);

     }

     100% {

         -webkit-transform:rotate(360deg);

     }

 

}

@-webkit-keyframes move {

     0% {

         -webkit-transform:translate(0px ,0px);

     }

     100% {

         -webkit-transform:translate(0px ,-5px);

     }

 

}

@-webkit-keyframes shake {

  0%  {

     transform: scale(1);

     -webkit-transform: scale3d(1, 1, 1);

     }

  6%{

     -webkit-transform: scale(.9) rotate(-8deg);

     -webkit-transform: scale3d(1, 1, 1) rotate(0, 0, 1, -8deg);

  }

 

  18%,  30%,42%{

     -webkit-transform: scale(1.1) rotate(8deg);

     -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 8deg);

  }

 

  12%,24%,  36%,48%{

     -webkit-transform: scale(1.1) rotate(-8deg);

     -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -8deg);  }

  90%  {

     -webkit-transform: scale(1) translate(0px,130px);

     -webkit-transform: scale3d(1, 1, 1) translate3d(0px,130px,0);

  }

  100%  {

     -webkit-transform: scale(1) translate(0px,150px);

     -webkit-transform: scale3d(1, 1, 1) translate3d(0px,150px,0);

  }

 

}

(4)添加js代码实现最后的效果。

  $(".chest-close").click(function(){

 

     $(this).addClass("shake");

     var that=this;

     

     this.addEventListener("webkitAnimationEnd", function(){

       

       $(that).closest(".open-has").addClass("opened");

       setTimeout(function(){

         $(that).removeClass("show");

         $(that).closest(".mod-chest").find(".chest-open").addClass("show");

         setTimeout(function(){

           $(".chest-open").addClass("blur");

         },500)

       },200)

     }, false);

   })

目录
相关文章
|
存储 JSON NoSQL
Node.js使用数据库LevelDB:超高性能kv存储引擎
Node.js被设计用来做快速高效的网络I/O。它的事件驱动流使其成为一种智能代理的理想选择,通常作为后端系统和前端之间的粘合剂。Node的设计初衷就是为了实现这一目的,但与此同时,它已成功用于构建传统的Web应用程序:一个HTTP服务器,提供为HTML页面或JSON消息响应,并使用数据库存储数据。
960 0
Node.js使用数据库LevelDB:超高性能kv存储引擎
|
JavaScript 定位技术
vue3 引入天地图
vue3 引入天地图
875 0
|
存储 JavaScript 编译器
玩转vitepress1.0,搭建个人网站~
当初1月份的时候为了后续春招求职,就使用vitepress搭建了一个个人网站,然后把自己本地的一些md文件整理了发布在了上面,不过当时vitepress还未发布正式版本,还是0.22.x这样的版本, 所以其实有很多不满意的地方,比如侧边栏折叠之前没有,明暗模式之前没有,单篇文章的大纲好像也没有,侧边栏在不同tab下有问题,这些我不太确定,可能功能是有的,但是官方文档上没更新罢了
712 0
|
监控 Java Apache
阿里巴巴开源 Sentinel 限流方案搭建
Sentinel是阿里开源的一个限流方案框架具有以下特征: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatical
Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatical
4702 1
|
JavaScript
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
前言 每一个项目都避免不了使用各种各样的图标,如果我们使用了 UI 组件库,比如说 ELement 等,那么组件库有一些封装好的图标供我们使用。但是项目是多变的和复杂的,组件库提供的图标很多时候不能满足需求,这个时候就需要我们自己引入想要的图标了。 今天介绍的便是如何将 iconfont 阿里图标库的图标引入到我们的 Vue3 项目中来!
5676 1
Vue3 + Vite + TS项目引入iconfont图标(Svg方式)
|
Linux 开发者 iOS开发
Flutter笔记:桌面应用 窗口定制库 bitsdojo_window
Flutter笔记:桌面应用 窗口定制库 bitsdojo_window
782 0
uniapp本地存储的几种方式
uniapp本地存储的几种方式
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器ECS架构X86计算是什么?和ARM有什么区别?
阿里云服务器ECS架构X86计算是什么?和ARM有什么区别?
766 0
|
移动开发 JavaScript Android开发
H5 video 自动播放(autoplay)不生效解决方案
H5 video 自动播放(autoplay)不生效解决方案
1239 0