实现效果

在 CodePen 上查看

在 Github 上查看

简单思路

复制要切页的节点,利用 CSS 的 clip-path 属性对节点进行裁剪,将节点分成多个部分,每个部分分成上下两块(因为需要上下两块向中间扭曲变换),给各个块设置不同延时的平移旋转扭曲变换动画效果即可。

代码实现

const fronts = document.querySelectorAll('.front')
const backs = document.querySelectorAll('.back')
const n = fronts.length
const m = n / 2
const player = []const keyframes = (num, n, isFront, isUp) => [{transform: isFront? 'rotateY(0deg) skewY(0deg)': `rotateY(-120deg) skewY(${isUp ? '' : '-'}30deg) translateX(${100 / n}%)`,transformOrigin: `${(100 / n) * (num + 1)}%`,},{transform: isFront? `rotateY(120deg) skewY(${isUp ? '-' : ''}30deg) translateX(-${100 / n}%)`: 'rotateY(0deg) skewY(0deg)',transformOrigin: `${(100 / n) * num}%`,},
]const options = {duration: 1000,fill: 'both',
}const playAll = () => {player.forEach(value => {value.play()})
}for (let i = 0; i < n; i++) {const j = Math.floor(i / 2)fronts[i].style.clipPath = `inset(${i % 2 == 0 ? '0%' : '50%'} ${Math.floor(100 - (100 / m) * (j + 1))}% ${i % 2 != 0 ? '0%' : '50%'} ${Math.floor((100 / m) * j)}%)`backs[i].style.clipPath = `inset(${i % 2 == 0 ? '0' : '50%'} ${Math.floor(100 - (100 / m) * (j + 1))}% ${i % 2 != 0 ? '0%' : '50%'} ${Math.floor((100 / m) * j)}%)`player.push(new Animation(new KeyframeEffect(fronts[i], keyframes(j, m, true, i % 2 == 0), {...options,iterations: 0.75,delay: (j < m / 2 ? m / 2 - 1 - j : j - m / 2) * 200,}),),)player.push(new Animation(new KeyframeEffect(backs[i], keyframes(j, m, false, i % 2 == 0), {...options,delay: (j < m / 2 ? m / 2 - 1 - j : j - m / 2) * 200,}),),)
}playAll()

利用 WAAPI 实现百叶窗切页效果相关推荐

  1. ViewPager、Fragment和TabLayout实现切页效果

    文章目录 ViewPager.Fragment和TabLayout实现切页效果 ViewPager.Fragment和TabLayout实现切页效果 不会上传动图,心里哭唧唧.但是是完整代码!新建一个 ...

  2. android UI Tab切页效果 总结

    2019独角兽企业重金招聘Python工程师标准>>> 目前市面上APP 切页效果有两类(just android) 1.底部Tab点击不同的按钮来切换页面 && 滑 ...

  3. android 辅助功能 翻页,Android利用悬浮按钮实现翻页效果

    今天给大家分享下自己用悬浮按钮点击实现翻页效果的例子. 首先,一个按钮要实现悬浮,就要用到系统顶级窗口相关的WindowManager,WindowManager.LayoutParams.那么在An ...

  4. 利用CSS,实现翻页效果

    利用css3的3d效果,实现一个简单的翻页器: <!DOCTYPE html> <html lang="en"> <head><meta ...

  5. Android 上实现像微信一样的用Fragment来实现的Tab切页效果 提供源码下载

    网有不少的例子,但是要么是像微信一样可是没有使用Fragment实现,要么是只实现了一个很简单的切换,没有下面的菜单页.这个例子有实现了,我觉得暂时够我用了 ##实现类: + MainTabFragm ...

  6. launcher切页动画

    launcher切页动画 刚工作的时候,还是launcher4.4,好像有很多切页特效可以选,重写切页特效类可以自己实现切页效果. 太久不搞launcher,忘记在哪实现切页特效了,比如什么外盒子.内 ...

  7. html表格翻页简单,利用jQuery实现一个简单的表格上下翻页效果

    前言 本文主要介绍的是利用jQuery实现一个简单的表格上下翻页效果,注:实现原理与轮播图相似.下面话不多说,来看看详细的 实现方法吧. html: 日期参与团购场次团购结果当前状态 02.08 第一 ...

  8. [重磅] 让HTML5达到原生的体验 系列之中的一个 避免切页白屏

    非常多人都想.甚至曾使用HTML5开发跨平台App.而且想达到原生App的体验. 最后的结果都是无奈的放弃.HTML5貌似美好,但坑太多.想做到原生App的体验差点儿不可为. 也曾有过著名的faceb ...

  9. [重磅] 让HTML5达到原生的体验 系列之一 避免切页白屏

    很多人都想.甚至曾使用HTML5开发跨平台App,并且想达到原生App的体验. 最后的结果都是无奈的放弃,HTML5貌似美好,但坑太多,想做到原生App的体验几乎不可为. 也曾有过著名的faceboo ...

最新文章

  1. 福利 |《非结构化数据分析》书评:探索非结构化数据的魅力
  2. jlink、DAPLink、J-Link  OB资料整理
  3. redis(nosql数据库)
  4. python调试网页_Python Django shell 调试
  5. python+selenium个人学习笔记10-调用JavaScript和截图
  6. 快递信息管理系统源代码c++_学生信息管理系统C语言版
  7. linux suse 安装redis,suse 配置redis远程访问
  8. 用matlab做纹理合成,关于图像纹理合成的Matlab例程
  9. 《实现模式(修订版)》—第2章模式
  10. MacBook Pro 进入屏保 发热严重
  11. 晶体管放大电路与Multisim仿真学习笔记
  12. 【八种基本分析方法】
  13. 小伙伴要我给他介绍一些非常酷炫而有趣又容易上手的前端框架
  14. mysql数据库统计人数_统计人数 数据库
  15. 蓝牙耳机蓝牙音箱出口加拿大亚马逊ICID认证周期费用
  16. RabbitMQ实现订单超时设计思路、以及在订单过期临界点支付成功如何处理
  17. C#--使用Process类kill进程
  18. Acwing1072 树的最长路径(树的直径)树形Dp 记忆化搜索
  19. linux根据文件内容查找文件名,文件查找:find命令,文件名后缀
  20. 【踩坑记录】为VMware虚拟机引用主机代理

热门文章

  1. ADC 信号调理电路设计——必要措施、实测验证和应用说明(转载)
  2. 二维码的扫描与生成(含动态权限)
  3. 包装类中Integer类最全详解
  4. Oracle官网账号
  5. 手写一个迷你版的 Tomcat 猫
  6. 大数据开发要学习什么
  7. 巨噬细胞膜包裹载HCPT-PLGA纳米粒(HCPT-MCNP)|生物膜包载去氧氟尿苷
  8. 织梦 简单的会员系统
  9. java安装了为什么运行不了_如何安装java(安装了java为什么不能使用)
  10. 【Blender】基础物体建模(2)