微信小程序 |从零实现酷炫纸质翻页效果

简介: 微信小程序 |从零实现酷炫纸质翻页效果

一、效果展示

image.gif


二、需求背景

  • 在传统的·电子书应用中,我们体验往往是非常生硬。每个页面之间的切换仅仅是简单的切入切出,没有任何的生动感。这使得我们在看电子书的同时仍然会觉得,我们真的只是在玩手机,除了简单的文字输入没有任何美和动效的享受!
  • 在传统的相册应用中,我们也是是简单的左右划入划出,也显得略微生硬。

于是,就有了今天所分享的类纸感的翻页动画,在手机上实现物理纸质书或者纸质相册的翻页效果,大幅度提升用户观感度!


三、实现代码

3.1 核心事件的监听

对于鼠标点击然后拖动时纸张的动画会随着鼠标的位置进行移动,所以我们需要实时去监听鼠标点击进入和点击离开的事件,这样就可以明确地给动画元素传达开始和结束的指令。

  • 使用@引入相应的鼠标事件
<view id='magazine'
      v-on:swipeleft="touchl" v-on:swiperight="touchr" 
      @mousedown="pcmousedown" @mouseup="pcmouseup"
    >
    <slot></slot>
</view>


  • 定义相应的鼠标事件的动作内容
pcmousedown(event) {
        this.mDown = event.clientX;
      },
      pcmouseup(event) {
      this.mUp = event.clientX;
      if ((this.mDown - this.mUp) > 70) {
        touchLeft('#magazine');
      }
      if ((this.mUp - this.mDown) > 70) {
          touchRight('#magazine');
      }
}


3.2 使用Slot插槽技术为内容预留空位

为了实现在页面中可以放入自己的页面内容时,我们在定义页面模板的时候需要使用<slot>标签对后续的内容进行留白操作!

  • 如果我们要放置的内容比较单一的时候,我们可以直接使用匿名slot

(1) 匿名slot—子组件

<div class="child">
    <h1>子组件</h1>
    <slot>这是个匿名插槽(没有name属性),这串字符是匿名插槽的默认值。</slot>
</div>


(2)匿名slot — 父组件

<div class="parent">
 <h1>父组件</h1>
 <child>
     <p>我是其他内容!!!!!</p>
 </child>
 </div>


(3)效果

父组件
子组件
我是其他内容!!!!! (匿名插槽的默认值被覆盖)


  • 若我们想要在页面中所放的内容较多且有多个模块的时候,我们这个时候可以使用命名slot
    (1) 命名slot—子组件
<div class="child">
    <h1>子组件</h1>
      <slot name="body">主体默认值</slot>
</div>


(2)命名slot — 父组件

<div class="parent">
 <h1>父组件</h1>
 <child>
     <p slot="body">我是主体</p>
 </child>
 </div>


(3)效果

父组件
子组件
我是主体 (具名插槽<slot name="body">的默认值被覆盖)


3.3 引入CSS动画实现纸张折叠效果

为了使动画效果更好的控制,我们首先要定位到相应的元素,所以这里我们需要引入JQuery,然后我们将动画通过js代码的形式进行控制。

(1)向左翻页控制函数

export const touchLeft = function (magazineId){
  var pageCount = $(magazineId).turn("pages"); //total page
  var currentPage = $(magazineId).turn("page"); //now page
  if (currentPage >= pageCount) {
    return;
  }
  if (currentPage <= pageCount) {
    $(magazineId).turn('page', currentPage + 1);
  }
}


(2)向右翻页控制函数

export const touchRight = function (magazineId){
  var pageCount = $(magazineId).turn("pages"); 
  var currentPage = $(magazineId).turn("page");
  if (currentPage <= pageCount) {
    if (currentPage <= 1) {
      return;
    }
    $(magazineId).turn('page', currentPage - 1);
  }
}


四、源码下载

相关文章
|
4月前
|
小程序
微信小程序:免费翻页时钟和todolist
微信小程序:免费翻页时钟和todolist
196 0
微信小程序:免费翻页时钟和todolist
|
5月前
|
开发者 索引
如何在微信小游戏制作工具中实现关卡翻页功能?
如何在微信小游戏制作工具中实现关卡翻页功能?
36 0
|
1月前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
1月前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
1月前
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。
|
1月前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。
|
3天前
|
Web App开发 数据采集 移动开发
开发uniapp过程中对app、微信小程序与h5的webview调试
开发uniapp过程中对app、微信小程序与h5的webview调试
|
13天前
|
小程序 前端开发 JavaScript
轻松学会微信小程序开发(一)
轻松学会微信小程序开发(一)
|
14天前
|
JSON 小程序 JavaScript
微信小程序开发1
微信小程序开发1
|
19天前
|
数据采集 存储 人工智能
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
39 0

热门文章

最新文章