新手发文章。文章是在看到翻书效果动画后自己结合别人的例子实现的翻书效果,发文章记录以下。以后如果有机会用上,可以参考此文章。

首先是React的JSX页面结构:

// 一页paper包含2面图片

// 根据状态中 atLeft数组是否包含页码数判断页面paper翻到了左边还是右边。

-1 ? 'left' : 'right'].join(' ')}>

-1 ? 'left' : 'right'].join(' ')}>

-1 ? 'left' : 'right'].join(' ')}>

-1 ? 'left' : 'right'].join(' ')}>

上面给包裹img的div加上translateZ(*px)时为了防止翻页后图片显示的问题,如不加会使翻过去的正面图像显示在反面上。

然后是样式文件:

.paper{

position: absolute;

transition: transform 1s;

transform-style: preserve-3d;

}

.pic{

position: absolute;

right: 0px;

}

.left{

transform-origin: left center;

transform: perspective(1000px) rotateY(0deg);

}

.right{

transform-origin: left center;

transform: perspective(1000px) rotateY(180deg);

}

最后是其他部分内容:

state = {

degree: 0,

atLeft: [],

to: 1,

}

componentDidMount (){

let timer = null

clearInterval(timer)

let i = 1

// 创建定时器为每页paper切换class名,左翻时方向变量to为:1,右翻时方向变量to为:-1

timer = setInterval(() => {

if(this.state.to === 1){

if (i <= 4){

let newAtLelft = this.state.atLeft

newAtLelft.push(i)

this.setState({

atLeft: newAtLelft

})

i++

}

// 右翻时 i等于 5时就要改变方向

if(i === 5){

this.setState({

to: -1

})

}

} else{

if (i >= 1) {

let newAtLelft = this.state.atLeft

newAtLelft.pop(i)

this.setState({

atLeft: newAtLelft

})

i--

}

// 注意: 左翻时包含页码i的数组atLeft删除到1时就需要改变方向

if(i === 1){

this.setState({

to: 1

})

}

}

},3000)

}

完整组件类

export default class App extends React.Component {

state = {

degree: 0,

atLeft: [],

to: 1,

}

componentDidMount (){

setInterval(() => {

this.setState({

degree: this.state.degree + 90

})

}, 3000)

let timer = null

clearInterval(timer)

let i = 1

timer = setInterval(() => {

if(this.state.to === 1){

if (i <= 4){

let newAtLelft = this.state.atLeft

newAtLelft.push(i)

this.setState({

atLeft: newAtLelft

})

i++

}

if(i === 5){

this.setState({

to: -1

})

}

} else{

if (i >= 1) {

let newAtLelft = this.state.atLeft

newAtLelft.pop(i)

this.setState({

atLeft: newAtLelft

})

i--

}

if(i === 1){

this.setState({

to: 1

})

}

}

},3000)

}

render () {

  • -1 ? 'left' : 'right'].join(' ')}>

  • -1 ? 'left' : 'right'].join(' ')}>
  • -1 ? 'left' : 'right'].join(' ')}>
  • -1 ? 'left' : 'right'].join(' ')}>

}

第一次发文章,文章有点乱,有问题请大佬们指出,谢谢。

keniran

发布了1 篇原创文章 · 获赞 0 · 访问量 22

私信

关注

标签:right,join,atLeft,newAtLelft,transition,React,state,class,left

来源: https://blog.csdn.net/keniran/article/details/104410808

react 翻书效果_transition、class名称、React实现无限反复翻书效果相关推荐

  1. html翻页特效实现原理,CSS3实现超炫3D翻书效果(二)

    上回书,我们已经简单实现如何翻一页.好,现在我们复习一下.翻书效果的基本原理,请看下html布局: 简单再次说明下:box为大盒子,主要提供显示区域的左部分:page为要翻转的页面,其包含正面(fro ...

  2. react native开发Android 篇——APP名称、图标、启动页

    react native开发Android 篇--APP名称.图标.启动页 设置APP名称 设置APP图标 设置启动页 隐藏启动页 设置APP名称 编辑 android/app/src/main/re ...

  3. ppt怎么把图片做成翻书效果_PPT教程,教你如何制作翻书效果动画

    我们ppt制作是不可能只有文字,经常需要添加一些动画特效,增加观赏性和美观性.今天小编要教的大家的是PPT中的翻书动画效果,有兴趣的朋友一起来看看吧! PPT制作翻书效果教程: 1.先打开PPT,然后 ...

  4. react中样式冲突_如何通过React中的样式使您的应用漂亮

    react中样式冲突 by Vinh Le 由Vinh Le 如何通过React中的样式使您的应用漂亮 (How to make your apps pretty with styling in Re ...

  5. react 生成图片二维码_21个React开发神器

    来源 | https://www.jianshu.com/p/febbd8d3cdd4 下列工具中的重要性与排序无关. 1.Webpack Bundle Analyzer 有没有想过你的应用程序的哪些 ...

  6. react中使用构建缓存_使用React构建Tesla的电池范围计算器(第1部分)

    react中使用构建缓存 by Matthew Choi 由Matthew Choi 使用React构建Tesla的电池范围计算器(第1部分) (Building Tesla's Battery Ra ...

  7. react jest测试_如何使用React测试库和Jest开始测试React应用

    react jest测试 Testing is often seen as a tedious process. It's extra code you have to write, and in s ...

  8. react 组件引用组件_React Elements VS React组件

    react 组件引用组件 A few months ago I posted to Twitter what I thought was a simple question: 几个月前,我在Twitt ...

  9. react和nodejs_如何使用NodeJS和React为SaaS构建Stripe Billing入门流程

    react和nodejs 你会学什么? (What will you learn?) In this article we will be going over the steps needed to ...

  10. react hooks使用_我如何使用React Hooks在约100行代码中构建异步表单验证库

    react hooks使用 by Austin Malerba 奥斯汀·马勒巴(Austin Malerba) 我如何使用React Hooks在约100行代码中构建异步表单验证库 (How I bu ...

最新文章

  1. 2017海克斯康拉斯维加斯美国大会 精彩即将开始
  2. Hadoop学习之路(三)Hadoop-2.7.5在CentOS-6.7上的编译
  3. python全栈 互联网协议
  4. DVWA学习(三)Brute Force(暴力破解)
  5. 思维导图分析http之前端组成
  6. python大数据处理与分析课程目标_《大数据分析与挖掘》课程教学大纲
  7. hik中心服务器登录失败,蒲公英云平台登录失败解决方案
  8. Win32Asm学习笔记[不断更新]
  9. 2019JAVA中ajax不高亮_2019-01-18 ajax请求时,token死活放不大header中
  10. ad17 linux 版本,Altium Designer这些不同版本的软件之间的区别有多大呢?
  11. ad采样的符号位_AD采样后数据如何在FPGA中转化为有符号数
  12. 【STM32 基础实验矩阵按键】
  13. 七种寻址方式(立即寻址、寄存器寻址)
  14. Unity3d报错及解决办法总结
  15. Python量化交易平台开发教程系列5-底层接口对接
  16. 知乎9.6万赞热帖:“为什么飞机的头等舱一直拉着帘子?”答案细思极恐
  17. excel怎么设置打印区域_excel:将多个表格的不同区域打印在一张纸上
  18. 在移动硬盘上安装Ubuntu
  19. 第73节:Java中的HTTPServletReauest和HTTPServletResponse
  20. leaftlet 中Polygon的使用属性

热门文章

  1. 《GNU Emacs Lisp编程入门》读书笔记
  2. SMT Kingdom v8.5 地震解释软件\
  3. 服装企业三步走向PLM,致力提升价值的时尚品牌
  4. native数据类型 react_React-Native 之 数据持久化
  5. html阻止超链接跳转,009_阻止html标签默认事件的执行,比如阻止超链接默认点击事件的执行...
  6. LPC4370 USERMANUAL
  7. 计算机四级网络工程师复习提纲
  8. 小软件项目开发的管理
  9. lua 常用数据类型总结
  10. 360浏览器html在哪儿,360浏览器打印页面设置在哪里