码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 微信小程序 |从零实现酷炫纸质翻页效果


    📌个人主页:个人主页
    ​🧀 推荐专栏:小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏!从个人到商业的全套开发教程,实打实的干货分享,确定不来看看? 😻😻】
    📝作者简介:一个读过研、创过业,从全栈工程师转行做大数据开发的大厂人!
    ⭐️您的小小关注是我持续输出的动力!⭐️


    干货内容推荐

    🥇入门和进阶小程序开发,不可错误的精彩内容🥇 :

    • 《小程序开发必备功能的吐血整理【个人中心界面样式大全】》
    • 《你真的会做小程序按钮吗?看了字节35K前端的样式设计,悟了》
    • 《来接私活吧?玩转小程序开发之丝滑拆红包【附完整代码】》
    • 《来接私活吧?小程序接私活必备功能-婚恋交友【附完整代码】》
    • 《吐血整理的几十款小程序登陆界面【附完整代码】》

    文章目录

    • 干货内容推荐
    • 一、效果展示
    • 二、需求背景
    • 三、实现代码
      • 3.1 核心事件的监听
      • 3.2 使用Slot插槽技术为内容预留空位
      • 3.3 引入CSS动画实现纸张折叠效果
    • 四、源码下载


    一、效果展示

    在这里插入图片描述


    二、需求背景

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

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


    三、实现代码

    3.1 核心事件的监听

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

    • 使用@引入相应的鼠标事件
    <view id='magazine'
    			v-on:swipeleft="touchl" v-on:swiperight="touchr" 
    			@mousedown="pcmousedown" @mouseup="pcmouseup"
    		>
    		<slot>slot>
    view>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 定义相应的鼠标事件的动作内容
    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');
    			}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

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

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

    (1) 匿名slot—子组件

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

    (2)匿名slot — 父组件

    <div class="parent">
     <h1>父组件h1>
     <child>
         <p>我是其他内容!!!!!p>
     child>
     div>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (3)效果

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

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

    (2)命名slot — 父组件

    <div class="parent">
     <h1>父组件h1>
     <child>
         <p slot="body">我是主体p>
     child>
     div>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (3)效果

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

    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);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    (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);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    四、源码下载

    • CSDN资源地址:https://download.csdn.net/download/weixin_37797592/86894495
  • 相关阅读:
    github将默认分支main改为master
    三刷操作系统之一文带你搞懂FreeRTOS——信号量
    刷题12.2
    B. Remove Prefix
    计算机毕业设计 基于Web铁路订票管理系统 火车订票管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
    PyTorch - Sequential和ModuleList
    CentOS7.9 安装postgresql
    服务器日志出现大量NTLM(NT LAN Manager)攻击
    Java——》对象如何进行拷贝
    工具分享-Ajax Interceptor
  • 原文地址:https://blog.csdn.net/weixin_37797592/article/details/127649762
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号